× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Static trong Java - Khám phá Biến, lớp và phương thức tĩnh trong Java

20/08/2021 00:55

Nếu muốn bắt đầu những bước đầu tiên trong quá trình tìm hiểu Java, chắc chắn bạn sẽ phải nắm rõ về phương thức tĩnh Static trong Java. Dù vậy, phương thức tĩnh luôn là một chủ đề khó hiểu trong Java đối với nhiều lập trình viên. Trong bài viết này về phương thức tĩnh, chúng ta sẽ cùng tìm hiểu các thông tin cụ thể về static trong Java.

Phương thức Static trong Java/ Phương thức Instance

Static trong Java

Phương thức Instance

Phương thức mà mọi lập trình viên thường sử dụng trong chương trình của họ là phương thức Instance. Phương thức instance chỉ định rõ ràng từ tên của nó rằng chúng ta cần tạo một instance/ thể hiện để truy cập phương thức này.

Ví dụ:

public void Instance_Method(String[] args) //method without static keyword

{

  System.out.println("Example of Instance method");

}

Để thực thi đoạn mã trên, chúng ta phải tạo một thể hiện của lớp sau đó gọi phương thức này. Mục đích của phương thức Instance là “khi cần chúng tôi gọi nó”. Điều đó đơn giản có nghĩa là Phương thức Instance cần một số cơ chế để thực thi.

>>> Đọc thêm: Lớp POJO trong Java - Sự khác biệt giữa POJO và JavaBean

Phương thức Method

Khi chúng ta nói về phương thức Static, chúng ta phải gán một từ khóa đặc biệt để chỉ ra rằng phương thức này là static. Để khai báo bất kỳ Phương thức tĩnh nào, chúng ta phải viết từ khóa static trước tên phương thức.

Cú pháp viết phương thức static:

static < method_name >

Như chúng ta đã thảo luận trong phương thức Instance, chúng ta phải tạo một thể hiện cho nó. Trong phương thức tĩnh, chúng ta không phải tạo một thể hiện của phương thức để thực thi nó.

Ví dụ:

public static void Static_Method(String[] args) //method with static keyword

{

  System.out.println("Example of Static method");

}

Java tự động thực thi phương thức với từ khóa static. Lập trình viên chỉ cần khai báo phương thức static và Java thực thi nó. Mục đích của phương thức static là khi chúng ta cần một số đoạn mã phải thực thi mọi lúc thì chúng ta khai báo nó là Static.

>>> Đọc thêm: Giao diện Runable trong Java - Nằm lòng về giao diện Runable

Biến Static trong Java

Trong Java, các biến tĩnh còn được gọi là các biến lớp. Nếu chúng ta khai báo bất kỳ biến nào với từ khóa static, thì nó được coi là biến tĩnh. Các biến được khai báo với từ khóa static tham chiếu đến thuộc tính chung cho tất cả các đối tượng của lớp. Ví dụ: tên trường đại học giống nhau đối với sinh viên, nhân viên, khoa, v.v. Nói cách khác, chúng ta có thể nói rằng chỉ có một bản sao duy nhất của biến tĩnh ở đó được chia sẻ giữa tất cả các trường hợp của lớp. Chúng ta có thể truy cập trực tiếp các biến tĩnh từ các phương thức tĩnh cũng như không tĩnh.

Ví dụ:

package com.techvidvan.statickeyword;

public class Static_Variable {

  static int number1; //Static variable type: int

  static int number2; //Static variable type: int

  static String str1; //Static variable type: String

  static String str2; //Static variable type: String

  public static void main(String[] args) {

    number1 = 101;

    number2 = 102;

    str1 = “Techvidvan”;

    str2 = “Static variable article”;

    System.out.println("Static Number: " + number1);

    System.out.println("Static Number: " + number2);

    System.out.println("Static String: " + str1);

    System.out.println("Static String: " + str2);

  }

}

Output

Static Number: 101

Static Number: 102

Static String: Techvidvan

Static String: Static variable article

Khối Static trong Java

Chúng ta biết rằng một khối không là gì khác ngoài các dòng mã nằm trong dấu ngoặc nhọn. Nếu chúng ta khai báo bất kỳ khối nào là tĩnh, thì các khối đó được gọi là khối tĩnh trong Java. Chúng ta sử dụng khối tĩnh khi chúng ta cần khởi tạo các biến tĩnh. Các khối tĩnh tải hoặc thực thi tại thời điểm tải một lớp. Có thể có nhiều khối tĩnh bên trong một chương trình Java. Và nhiều khối tĩnh này luôn thực thi theo cách tuần tự mà chúng được viết trong chương trình.

Ví dụ:

package com.techvidvan.statickeyword;

public class Single_Static_Block {

  static int number; //Static variable type: int

  static String str; //Static variable type: String




  static {

    // Static Block

    number = 13;

    str = "Static Block in Java: Techvidvan";

  }




  public static void main(String[] args) {

    System.out.println("Static Number: " + number);

    System.out.println("Static String: " + str);

  }

}

Output

Static Number: 13

Static String: Static Block in Java: Techvidvan

Phương thức Static trong Java

Phương thức tĩnh là phương thức được khai báo với từ khóa static. Khi chúng ta khai báo một phương thức là static, chúng ta có thể gọi phương thức này hoặc truy cập phương thức này mà không cần tạo một đối tượng hoặc thể hiện của lớp. Như chúng ta biết rằng để gọi các phương thức không tĩnh, trước tiên chúng ta cần tạo đối tượng của lớp và sau đó gọi phương thức thông qua đối tượng, nhưng không giống như các phương thức không tĩnh, chúng ta có thể gọi các phương thức tĩnh trực tiếp với tên lớp.

>>> Tham khảo: Khóa học lập trình Java

Các lớp Static trong Java

Chúng ta cũng có thể khai báo một lớp là biến tĩnh, điều kiện là lớp này nên là một lớp lồng nhau (nested class), tức là, lớp này cũng cần phải có mặt trong lớp, khi đó chúng ta mới có thể khai báo nó là static. Lớp static lồng nhau không yêu cầu đối tượng của lớp bên ngoài, Outer class. Một giới hạn của lớp static lồng nhau là nó không thể truy cập thành viên dữ liệu non-static của lớp Outer được.

Phương thức main() của Java Static là gì?

Bạn đã sử dụng phương thức main() trong mỗi chương trình Java. Phương thức này nhìn như sau:

public static void main(String args[]) {

  //code inside the main() method

}

VÌ không cần phải tạo một đối tượng của lớp để gọi lớp này. Chúng ta biết rằng trong quá trình thực thi chương trình Java, JVM luôn bắt đầu với phương thức main() của lớp class, và giả sử phương thức main() không tĩnh thì JVM cần tạo đối tượng của lớp class và sau đó gọi phương thức này, việc này sẽ gây ra vấn đề liên quan đến việc cấp phát bộ nhớ. Do đó phương thức main() của Java luôn được khai báo như biến tĩnh.

Lợi ích của từ khóa tĩnh trong Java

  • Bất kỳ biến nào được khai báo là static có thể truy cập toàn bộ
  • Chúng ta chỉ cần một đối tượng trên mỗi lớp để truy cập tất cả các biến static có lưu trữ bộ nhớ
  • Chúng ta có thể gọi phương thức static một cách trực tiếp. Vì vậy, bạn không cần tạo đối tượng.
  • Từ khóa Static có thể cho hiệu quả hoạt động tốt hơn trong code vì nhu cầu kiểm tra null là bằng không
  • Từ khóa Static có thể thực hiện các khóa meta trên các đối tượng như đếm số đối tượng hoặc xác thực đối tượng

Kết luận: Từ khóa Static là một trong 57 từ khóa dành riêng cho Java và có vai trò rất quan trọng trong việc quản lý bộ nhớ hiệu quả. Chúng ta có thể sử dụng từ khóa static với lớp trong Java, khối Java, biến và phương thức Java. Nếu chúng ta muốn khởi tạo một biến static thì chúng ta phải khai báo một khối là static. Nếu chúng ta muốn gọi trực tiếp phương thức mà không cần tạo đối tượng thì chúng ta nên sử dụng phương thức static. Trong bài viết này, chúng ta đã tìm hiểu rõ về khóa static trong Java và một số ví dụ về static. Hy vọng bài viết này hữu ích với bạn! Tìm hiểu thêm về Java và các  ngôn ngữ lập trình khác qua các khóa học lập trình tại  Viện Công nghệ thông tin T3H bạn nhé!

Cre: Techvidvan