Hầu hết các ngôn ngữ lập trình đều được tăng tính chặt chẽ với null. Trong Java, không hợp lệ là java.lang.NullPointerException
. Vì nó là một class trong gói java.lang
. Nó được gọi khi chúng ta thực hiện một số hoạt động có hoặc không có giá trị và đôi khi chúng ta không biết nó xảy ra ở đâu.
Đặc điểm của Null
Hầu hết các lập trình viên đều phải đổi mặt với các vấn đề liên quan đến Null. Có một vài đặc điểm chúng ta nên biết về Null trong ngôn ngữ lập trình Java.
- Case sentive – Phân biệt chữ hoa và chữ thường
- Giá trị biến tham chiếu
- Kiểu của null
- Autoboxing và unboxing
- Instanceof operator
- Các phương thức static vs non-static
- == và !=
Java null là case sentive – Phân biệt chữ hoa và chữ thường
Nó là nghĩa đen và các từ khoá trong Java là case sentive nghĩa là phân biệt giữa chữ hoa và chữ thường, nên chúng ta không thể viết nó là NULL hoặc o như chúng ta sử dụng trong C
Ví dụ
public class Test { public static void main (String[] args) throws java.lang.Exception { // Lỗi biên dịch : can't find symbol 'NULL' Object obj = NULL; // Chạy thành công Object obj1 = null; } }
Kết quả
5: error: cannot find symbol can’t find symbol ‘NULL’ ^ variable NULL class Test 1 error
Giá trị biến tham chiếu
Bất kỳ biến tham chiếu nào đều tự động có giá trị null
public class Test { private static Object obj; public static void main(String args[]) { // Nó sẽ print null; System.out.println("Value of object obj is : " + obj); } }
Kiểu của Null trong Java
Java Null chỉ là một giá trị đặc biệt, nó không phải là object hay type
String str = null; Integer itr = null; Double dbl = null; String myStr = (String) null; Integer myItr = (Integer) null; Double myDbl = (Double) null;
Autoboxing và Unboxing
Một lỗi sẽ được đưa ra nếu giá trị null được gán cho kiểu dữ liệu căn bản trong Java
public class Test { public static void main (String[] args) throws java.lang.Exception { Integer i = null; int a = i; } }
Instanceof operator
Khi chạy, Instanceof operator trong Java là true nếu biểu thức là Java null, nó sẽ kiểm tra type của instance của object
public class Test { public static void main (String[] args) throws java.lang.Exception { Integer i = null; Integer j = 10; //prints false System.out.println(i instanceof Integer); //Biên dịch thành công System.out.println(j instanceof Integer); } }
Các phương thức static và non-static
Một giá trị non-static không thể được gọi bằng giá trị null, nó sẽ đưa ra một NullPointerException, nhưng điều này sẽ không xảy ra với các phương thức static
public class Test { public static void main(String args[]) { Test obj= null; obj.staticMethod(); obj.nonStaticMethod(); } private static void staticMethod() { System.out.println("static method, can be called by null reference"); } private void nonStaticMethod() { System.out.print(" Non-static method- "); System.out.println("cannot be called by null reference"); } }
Toán tử == và !=
Những toán tử so sánh này có thể hoạt động tốt với các giá trị null
public class Test { public static void main(String args[]) { System.out.println(null==null); System.out.println(null!=null); } }