JavaRush /Blog Java /Random-VI /Nghỉ giải lao #142. Từ khóa tĩnh đóng vai trò gì trong Ja...

Nghỉ giải lao #142. Từ khóa tĩnh đóng vai trò gì trong Java?

Xuất bản trong nhóm
Nguồn: FreeCodeCamp Từ khóa static có thể được sử dụng trong các phần khác nhau của mã Java như biến, phương thức và khối tĩnh. Hôm nay chúng ta sẽ tìm hiểu chính xác làm thế nào nó có thể được áp dụng trong thực tế. Nghỉ giải lao #142.  Từ khóa tĩnh đóng vai trò gì trong Java?  - 1Mục đích chính của việc sử dụng từ khóa static trong Java là để tiết kiệm bộ nhớ. Khi chúng ta tạo một biến trong một lớp mà các lớp khác sẽ truy cập, trước tiên chúng ta phải tạo một thể hiện của lớp đó rồi gán một giá trị mới cho mỗi thể hiện của biến đó. Điều này là cần thiết để giá trị của các biến mới giống nhau cho tất cả các lớp/đối tượng mới. Nhưng khi chúng ta tạo các biến tĩnh, giá trị của chúng không đổi trong tất cả các lớp khác và chúng ta không cần tạo một thể hiện để sử dụng biến đó. Bằng cách này, chúng ta tạo biến một lần, do đó bộ nhớ chỉ được cấp phát một lần. Bạn sẽ hiểu điều này tốt hơn với một vài ví dụ trong bài viết này.

Cách tạo biến tĩnh trong Java

Để hiểu cách sử dụng từ khóa static khi tạo biến, chúng ta hãy xem cách tạo biến thông thường được chia sẻ bởi từng phiên bản của một lớp.
class Student {
    String studentName;
    String course;
    String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();

        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";
        Student2.school = "freeCodeCamp";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Tôi sẽ giải thích từng bước những gì đã xảy ra trong đoạn mã trên. Chúng ta đã tạo một lớp Sinh viên với ba biến - tên sinh viên , khóa họctrường học . Sau đó chúng ta tạo ra hai instance của lớp Sinh viên :
Student Student1 = new Student();
Student Student2 = new Student();
Trường hợp đầu tiên là Sinh viên1 , có quyền truy cập vào các biến được tạo trong lớp của nó, có các giá trị sau:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
Trường hợp thứ hai có ý nghĩa như sau:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Nếu để ý kỹ, bạn sẽ thấy cả hai sinh viên đều có cùng tên trường - “freeCodeCamp”. Nhưng điều gì sẽ xảy ra nếu chúng ta phải tạo ra 100 học sinh cho cùng một trường? Điều này có nghĩa là chúng ta sẽ khởi tạo biến có cùng giá trị 100 lần, mỗi lần cấp phát bộ nhớ mới. Điều này có thể không phải là vấn đề đối với một số người, nhưng trong một cơ sở mã lớn, nó có thể làm chậm chương trình một cách đáng kể. Để giải quyết vấn đề này chúng ta sẽ sử dụng từ khóa static để tạo biến school . Sau này, tất cả các phiên bản của lớp có thể sử dụng biến này. Một cái gì đó như thế này:
class Student {
    String studentName;
    String course;
    static String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";


        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Trong mã này, chúng tôi đã tạo một biến tĩnh có tên là school . Lưu ý rằng từ khóa static đứng trước kiểu dữ liệu và tên biến: static String school = "freeCodeCamp"; . Bây giờ, khi tạo một phiên bản mới của lớp, chúng ta không cần khởi tạo biến trường cho mỗi phiên bản. Trong mã của chúng tôi, chúng tôi chỉ gán một giá trị cho một biến trong phiên bản đầu tiên và sau đó nó được kế thừa bởi phiên bản tiếp theo. Lưu ý rằng việc thay đổi giá trị của biến tĩnh ở bất kỳ đâu trong mã sẽ ghi đè giá trị ở các phần khác của mã mà nó đã được khai báo trước đó. Vì vậy, bạn chỉ nên sử dụng từ khóa tĩnh cho các biến được dự định không đổi trong chương trình. Bạn cũng có thể gán giá trị cho một biến khi tạo nó để không phải khai báo lại khi khởi tạo lớp: static String school = "freeCodeCamp"; . Đây là những gì bạn nhận được nếu bạn sử dụng phương pháp này:
class Student {
    String studentName;
    String course;
    static String school = "freeCodeCamp";

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Bây giờ bạn sẽ thấy cách khởi tạo các biến tĩnh bằng cách sử dụng các khối tĩnh.

Cách tạo một phương thức tĩnh trong Java

Trước khi xem ví dụ, đây là một số điều bạn cần biết về các phương thức tĩnh trong Java:
  • Các phương thức tĩnh chỉ có thể truy cập và sửa đổi các biến tĩnh.
  • Các phương thức tĩnh có thể được gọi/sử dụng mà không cần tạo một thể hiện của lớp.
Đây là một ví dụ để giúp bạn hiểu điều này:
class EvenNumber {

    static int evenNumber;

    static void incrementBy2(){
        evenNumber = evenNumber + 2;
        System.out.println(evenNumber);
    }

    public static void main(String[] args) {
        incrementBy2(); // 2
        incrementBy2(); // 4
        incrementBy2(); // 6
        incrementBy2(); // 8
    }
}
Trong đoạn mã trên, chúng ta đã tạo một số nguyên ( EvenNumber ) trong một lớp có tên EvenNumber . Phương thức tĩnh của chúng tôi được gọi là tăngBy2() . Phương thức này tăng giá trị của số nguyên chẵnNumber và in giá trị của nó. Không cần tạo một thể hiện của lớp, chúng ta có thể gọi phương thức tăngBy2() trong phương thức chính của chương trình . Mỗi lần chúng ta gọi phương thức này, số chẵn được tăng thêm 2 và được in. Bạn cũng có thể thêm tên lớp vào một phương thức bằng ký hiệu dấu chấm khi gọi phương thức: EvenNumber.incrementBy2(); . Mỗi phương thức tĩnh thuộc về lớp, không thuộc về các thể hiện của lớp.

Cách tạo khối tĩnh trong Java

Các khối tĩnh trong Java tương tự như các hàm tạo. Chúng ta có thể sử dụng chúng để khởi tạo các biến tĩnh, chúng được trình biên dịch thực thi trước phương thức chính .
class Block {

    static int year;

    static {
        year = 2022;
        System.out.println("This code block got executed first");
    }

    public static void main(String[] args) {

        System.out.println("Hello World");
        System.out.println(year);
    }
}
Trong đoạn mã trên, chúng ta đã tạo một biến số nguyên tĩnh năm . Sau đó chúng tôi khởi tạo nó trong một khối tĩnh:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Như bạn có thể thấy, một khối tĩnh có thể được tạo bằng cách sử dụng từ khóa static theo sau là dấu ngoặc nhọn. Trong khối tĩnh của mã, chúng tôi đã khởi tạo biến năm với giá trị 2022. Chúng tôi cũng in ra một số văn bản - “Khối mã này đã được thực thi trước tiên”. Trong phương thức chính , chúng ta đã in “Hello World” và một biến tĩnh năm . Trong bảng điều khiển, mã sẽ được thực thi theo thứ tự sau:
Khối mã này được thực thi đầu tiên Hello World 2022
Điều này thể hiện rõ ràng cách mã trong khối tĩnh được thực thi trước phương thức chính .

Phần kết luận

Trong bài viết này, chúng ta đã nói về từ khóa static trong Java. Đây là từ khóa về cơ bản giúp chúng ta tối ưu hóa bộ nhớ trong các chương trình viết bằng Java. Chúng ta cũng đã học cách tạo các biến và phương thức tĩnh bằng các ví dụ. Cuối cùng, chúng ta đã nói về các khối tĩnh, có thể được sử dụng để khởi tạo các biến tĩnh. Các khối tĩnh được thực thi trước phương thức chính. Chúc mừng mã hóa!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION