Static trong java là gì

Từ khóa static trong Java được sử dụng chủ yếu để quản lý bộ nhớ. Chúng ta có thể áp dụng từ khóa stactic với biến, phương thức, và lớp lồng nhau.

Bạn đang xem : Static trong java là gì
*Từ khóa Static trong Java

Từ khóa static thuộc về class chứ không phải thuộc về thể hiện của class.

Bạn đang đọc: Static trong java là gì

Static hoàn toàn có thể là :
Variable ( Biến của class ) Method ( Phương thức của class ) BlockNested class

1. Biến static trong Java

Nếu bạn tuyên bố bất kỳ biến nào với từ khóa static, nó là một biến static.

Biến static hoàn toàn có thể được sử dụng để chỉ thuộc tính chung của tổng thể những đối tượng người tiêu dùng ( không phải là duy nhất cho từng đối tượng người dùng ), ví dụ : tên công ty của nhân viên cấp dưới, tên trường ĐH của sinh viên, v.v. Biến static chỉ nhận được bộ nhớ một lần trong khu vực class tại thời gian tải lớp ( class loading ) .

1.1. Ưu điểm của biến static

Biến static làm cho bộ nhớ chương trình của bạn hiệu suất cao hơn ( tức là, nó tiết kiệm ngân sách và chi phí bộ nhớ ) .

1.2. Có vấn đề gì không có biến static?

class Student { int id ; String name ; String college = ” NIIT ” ; } Giả sử có 500 sinh viên trong trường ĐH NIIT, giờ đây toàn bộ những data thành viên thành viên sẽ nhận được bộ nhớ mỗi khi đối tượng người tiêu dùng được tạo .
Tất cả những sinh viên có id và name duy nhất của nó, thế cho nên data thành viên thành viên là tốt trong trường hợp như vậy .
Ở đây, ‘ college ” đề cập đến thuộc tính chung của toàn bộ những đối tượng người tiêu dùng. Nếu tất cả chúng ta làm cho nó thành static, trường này sẽ chỉ nhận được cấp phép bộ nhớ một lần .

Lưu ý: Thuộc tính static chia sẻ cho tất cả các đối tượng, nó có thể gọi khi chưa cần tạo đối tượng nào.

1.3. Ví dụ về biến static

Để hiểu rõ về biến static hơn thì tất cả chúng ta sẽ cùng xem ví dụ sau :
File : TestStaticVariable1. java
/ / Chương trình Java ví dụ về biến static class Student { int id ; / / instance variable String name ; static String college = ” NIIT ” ; / / static variable / / constructor Student ( int i, String n ) { id = i ; name = n ; } / / Phương thức để hiển thị thông tin sin viên void display ( ) { System. out.println ( id + ” “ + name + ” “ + college ) ; } } / / Tạo class khác để thực thi hiển thị dữ liệupublic class TestStaticVariable1 { public static void main ( String args ) { Student s1 = new Student ( 17, ” Hải ” ) ; Student s2 = new Student ( 18, ” Doanh ” ) ; / / Chúng ta hoàn toàn có thể đổi khác trường ĐH của tổng thể sv bằng 1 dòng code / / Student. college = ” NIIT – ICT TP. Hà Nội ” ; s1.display ( ) ; s2.display ( ) ; } } Kết quả :
17 Hải NIIT18 Doanh NIIT

1.4. Chương trình bộ đếm không có biến static

Trong ví dụ này, chúng ta đã tạo ra một biến thể hiện có tên là count được tăng lên trong hàm tạo.

Do biến đối tượng người dùng nhận được bộ nhớ tại thời gian tạo đối tượng người dùng, mỗi đối tượng người tiêu dùng sẽ có bản sao của biến biểu lộ .
Xem thêm : Vib Là Ngân Hàng Vib Là Ngân Hàng Gì ? Ngân Hàng Vib Có Uy Tín Không ?
Tham khảo :
Nếu nó được tăng lên, nó sẽ không phản ánh đến những đối tượng người tiêu dùng khác. Vì vậy, mỗi đối tượng người dùng sẽ có giá trị là 1 trong biến count .
/ / Chương trình Java sử dụng biến biểu lộ ( instance variable ) / / lấy bộ nhớ tại mỗi thời gian tạo đối tượng người tiêu dùng của class.class Counter { int count = 0 ; / * lấy bộ nhớ tại mỗi thời gian bộc lộ được tạo * / Counter ( ) { count + + ; / / Tăng lên 1 đơn vị chức năng System. out.println ( count ) ; } public static void main ( String args ) { / / Tạo những đối tượng người tiêu dùng Counter c1 = new Counter ( ) ; Counter c2 = new Counter ( ) ; Counter c3 = new Counter ( ) ; } } Kết quả :
111

1.5. Chương trình bộ đếm có biến static

Như tất cả chúng ta đã đề cập ở trên, biến static sẽ chỉ nhận được bộ nhớ một lần, nếu bất kể đối tượng người tiêu dùng nào đổi khác giá trị của biến tĩnh, nó sẽ giữ lại giá trị của nó .
/ / Chương trình Java sử dụng biến static / / nó san sẻ với toàn bộ những đối tượng người dùng. class Counter { static int count = 0 ; / * Chỉ nhận bộ nhớ một lần và giữ lại giá trị của nó * / Counter ( ) { count + + ; / / Tăng lên 1 đơn vị chức năng System. out.println ( count ) ; } public static void main ( String args ) { / / Tạo những đối tượng người dùng Counter c1 = new Counter ( ) ; Counter c2 = new Counter ( ) ; Counter c3 = new Counter ( ) ; } } Kết quả :
123

2. Phương thức static trong Java

Nếu bạn áp dụng từ khóa static cho bất kỳ phương thức nào, nó được gọi là phương thức static.Một phương thức static thuộc về class chứ không phải là đối tượng của một class.Một phương thức static có thể được gọi mà không cần tạo một thể hiện của một class.Một phương thức static có thể truy cập static data member và có thể thay đổi giá trị của nó.

2.1. Ví dụ về phương thức static trong Java

/ / Chương trình Java sử dụng phương pháp static class Student { int id ; String name ; static String college = “ NIIT ” ; / / Phương thức static đổi khác giá trị của biến static static void change ( ) { college = “ NIIT – ICT TP. Hà Nội ” ; } / / Hàm tạo để khởi tạo biến Student ( int i, String n ) { id = i ; name = n ; } / / Phương thức hiển thị tài liệu void display ( ) { System. out.println ( id + ” “ + name + ” “ + college ) ; } } / / Class tạo và hiển thị tài liệu của đối tượng người dùng public class TestStaticMethod { public static void main ( String args ) { Student. change ( ) ; / / Gọi phương pháp change ( ) / / Tạo đối tượng người tiêu dùng Student s1 = new Student ( 17, ” Hải ” ) ; Student s2 = new Student ( 18, ” Doanh ” ) ; Student s3 = new Student ( 19, ” Việt ” ) ; / / Gọi phương pháp hiển thị tài liệu s1.display ( ) ; s2.display ( ) ; s3.display ( ) ; } } Bạn đoán college lúc này là NIIT hay là NIIT – ICT TP. Hà Nội ?
Kết quả :
17 Hải NIIT – ICT Hà Nội18 Doanh NIIT – ICT Hà Nội19 Việt NIIT – ICT Thành Phố Hà Nội

2.2. Một ví dụ khác sử dụng phương thức static

/ / Chương trình Java để lập phương của 1 số ít đã cho bằng phương pháp tĩnhclass Calculate { static int cube ( int x ) { return x * x * x ; } public static void main ( String args ) { int result = Calculate. cube ( 5 ) ; System. out.println ( result ) ; } } Như bạn thấy đấy, tất cả chúng ta hoàn toàn có thể gọi phương pháp static mà không cần khởi tạo đối tượng người dùng nào cả .
Kết quả :
125

Hạn chế của phương thức static là gì?

Có 2 điểm hạn chế của phương pháp static : Phương thức static không hề sử dụng data thành viên non-static hoặc không hề gọi phương pháp non-static trực tiếp. this và super không hề được sử dụng trong toàn cảnh static .
Ví dụ :
class A { int a = 40 ; / / non static public static void main ( String args ) { System. out.println ( a ) ; } } Kết quả :
Compile Time Error

Tại sao phương thức main của Java là static?

Đó là do tại đối tượng người dùng không bắt buộc phải gọi một phương pháp static .

Nếu đó là một phương thức non-static, trước tiên Máy ảo Java tạo một đối tượng sau đó gọi phương thức main() sẽ dẫn đến vấn đề cấp phát thêm bộ nhớ.

3. Java static block

Java static block :
Được sử dụng để khởi tạo static data thành viên. Nó được thực thi trước phương pháp static tại thời gian class loading .

3.1. Ví dụ về static block trong Java

Để hiểu hơn về static block tất cả chúng ta hãy xem ví dụ sau :
class A2 { static { System. out.println ( “ static block được gọi ” ) ; } public static void main ( String args ) { System. out.println ( “ Hello main ” ) ; } } Kết quả :
static block được gọiHello main

3.3. Có thể thực thi một chương trình mà không có phương thức main() không?

Không .
Một trong những cách làm như vậy là sử dụng static block, nhưng chỉ hoàn toàn có thể cho đến JDK 1.6. Kể từ JDK 1.7, không hề thực thi một class java mà không có phương pháp main .
Bạn thử chạy thì biết :
class A3 { static { System. out.println ( “ static block được gọi ” ) ; System. exit ( 0 ) ; } } Kết quả nếu chạy từ phiên bản JDK 1.6 quay trở lại trước :
static block được gọiNhưng kể từ phiên bản JDK 1.7 trở đi thì :
Error : Main method not found in class A3, please define the main method as : public static void main ( String args ) or a JavaFX application class must extend javafx.application. Application

Bạn đã hiểu về từ khóa static trong Java chưa?

Như vậy là trong bài viết này bạn đã được tìm hiểu về từ khóa static, biến static, phương thức staticblock static trong Java.

Xem thêm : Phản Dame Nghĩa Là Gì – Nên Dùng Từ Này Trong Trường Hợp Nào

Hãy thực hiện lại các ví dụ để thực sự hiểu về static trong Java nhé.

Chuyên mục : Kiến thức