Từ khóa static trong Java được sử dụng đầy đủ để 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.
Static có thể là:
Variable (Biến của class)Method (Phương thức của class)BlockNested class
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 có thể được sử dụng để chỉ thuộc tính chung của tất cả các mục tiêu (không phải là duy nhất cho từng mục tiêu), ví dụ: tên doanh nghiệp của nhân viên, tên trường đại học 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 điểm tải lớp (class loading).
Biến static làm cho bộ nhớ chương trình của bạn hiệu quả hơn (tức là, nó tiết kiệm bộ nhớ).
class Student int id; String name; String college=”NIIT”; Giả sử có 500 sinh viên trong trường đại học NIIT, thời gian này tất cả các data member cá thể sẽ nhận được bộ nhớ mỗi khi mục tiêu được tạo.
Tất cả các sinh viên có id và name duy nhất của nó, vì vậy data member cá thể là tốt trong trường hợp như vậy.
Ở đây, ‘college” nhắc đến thuộc tính chung của tất cả các mục tiêu. Nếu chúng ta làm cho nó thành static, trường này sẽ chỉ nhận được cấp phát bộ nhớ một lần.
Lưu ý: Thuộc tính static chia sẻ cho tất cả các mục tiêu, nó có thể gọi khi chưa cần tạo mục tiêu nào.
Để hiểu rõ về biến static hơn thì 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 hiện 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 có thể thay đổi trường đại học của tất cả sv bằng 1 dòng code //Student.college=”NIIT – ICT Hà Nội”; s1.display(); s2.display(); Kết quả:
17 Hải NIIT18 Doanh NIIT
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 mục tiêu nhận được bộ nhớ tại thời điểm tạo mục tiêu, mỗi mục tiêu sẽ có bản sao của biến thể hiện.
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 các mục tiêu khác. Vì vậy, mỗi mục tiêu sẽ có giá trị là 1 trong biến count.
// Chương trình Java sử dụng biến thể hiện (instance variable) // lấy bộ nhớ tại mỗi thời điểm tạo mục tiêu của class.class Counter int count = 0;/* lấy bộ nhớ tại mỗi thời điểm thể hiện được tạo*/ Counter() count++; // Tăng lên 1 đơn vị System.out.println(count); public static void main(String args) // Tạo các mục tiêu Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); Kết quả:
111
Như chúng ta đã nhắc ở trên, biến static sẽ chỉ nhận được bộ nhớ một lần, nếu bất kỳ mục tiêu nào thay đổi 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ó chia sẻ với tất cả các mục tiêu.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ị System.out.println(count); public static void main(String args) // Tạo các mục tiêu Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); Kết quả:
123
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à mục tiêu 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ó.
// Chương trình Java sử dụng phương thức static class Student int id; String name; static String college = “NIIT”; // Phương thức static thay đổi giá trị của biến static static void change() college = “NIIT – ICT 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ị dữ liệu void display() System.out.println(id+” “+name+” “+college); // Class tạo và hiển thị dữ liệu của mục tiêu public class TestStaticMethod public static void main(String args) Student.change(); // Gọi phương thức change() // Tạo mục tiêu Student s1 = new Student(17,”Hải”); Student s2 = new Student(18,”Doanh”); Student s3 = new Student(19,”Việt”); // Gọi phương thức hiển thị dữ liệu s1.display(); s2.display(); s3.display(); Bạn đoán college lúc này là NIIT hay là NIIT – ICT Hà Nội?
Kết quả:
17 Hải NIIT – ICT Hà Nội18 Doanh NIIT – ICT Hà Nội19 Việt NIIT – ICT Hà Nội
// Chương trình Java để lập phương của một số đã cho bằng phương thức 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, chúng ta có thể gọi phương thức static mà không cần khởi tạo mục tiêu nào cả.
Kết quả:
125
Có 2 điểm hạn chế của phương thức static:Phương thức static không thể sử dụng data member non-static hoặc không thể gọi phương thức non-static trực tiếp.this và super không thể được sử dụng trong bối 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
Đó là bởi vì mục tiêu không cần phải gọi một phương thức static.
Nếu đó là một phương thức non-static, trước tiên Máy ảo Java tạo một mục tiêu sau đó gọi phương thức main() sẽ dẫn đến vấn đề cấp phát thêm bộ nhớ.
Java static block:
Được sử dụng để khởi tạo static data member.Nó được thực thi trước phương thức static tại thời điểm class loading.
Để hiểu hơn về static block 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
Không.
Một trong những cách làm như vậy là sử dụng static block, nhưng chỉ có thể cho đến JDK 1.6. Kể từ JDK 1.7, không thể thực thi một class java mà không có phương thức 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 trở về 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
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 static và block 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
#Static #Trong #Java #Là #Gì.
Chân thành cảm ơn bạn đã đọc tin tại Centralreadingmosque
Vậy là bạn đã có thêm nhiều thông tin và kiến thức bổ ích về chủ đề Static Trong Java Là Gì rồi nhé. Hãy cùng Centralreadingmosque đọc thêm nhiều bài viết hơn để có nhiều kiến thức tổng hợp hữu ích hơn nhé!. Xin cám ơn người mua đã quan tâm theo dõi.
Nguồn: Static Trong Java Là Gì