Đôi điều thú vị về null trong ngôn ngữ lập trình Java

Chào anh em, tính là hôm nay không viết bài về java null, chỉ viết về Java Override và Overload. Nhưng mà nghĩ lại thì bài viết dài loằng ngoằng như Stream hay JDBC đọc hoài cũng chán, nên nay đổi gió viết bài giải trí tí xíu về java null.

Bắt đầu, cái tên null (đánh vần là nờ un nun). Nhắc tới null thì hầu như dev nào mặc định là không có gì. Nhưng bất ngờ thay lại có hẳn một trang wiki viết về nó.

Đắng lòng hơn, tên miền null.vn cũng đã có người mua, đang muốn bán với giá 40 cành. Vì vậy anh em đừng khinh thường nờ un nun nhé!.

1. Phân biệt chữ HOA, chữ thường – null is case sensitive

Đầu tiên, không lấy gì làm bất ngờ. null thì khác NULL. Đừng dại mà uppercase lên cho đẹp source. Tôn chỉ luôn là hãy để em ấy được tự nhiên.

// null != NULL
public class Kieblog { 
public static void main (String[] args) throws java.lang.Exception { 
// compile-time error : không tìm thấy 'NULL' 
Object obj = NULL; 
// runs successfully 
Object obj1 = null; 
} 
}

2. Tham chiếu biến – Reference variale

Bất kì tham chiếu biến nào (nếu không được thiết lập sẵn) thì default là nờ un nun =))

// Reference tới object sẽ là null.
public class Test { 
private static Object obj; 
public static void main(String args[]) 
{ 
// it will print null; 
System.out.println("Value of object obj is : " + obj); 
} 
}
Value of object obj is : null

3. Kiểu của null – Type of null

Xin anh em nhớ giúp rằng, trời đánh sinh ra nờ un nun là một giá thằng rất đặc biệt. Không phải là object, cũng không thuộc về bất cứ kiểu nào. Đắng lòng thay, bất cứ kiểu nào cũng có thể cast về null

  // null có thể gán cho String
String str = null; 

// null có thể gán cho Integer
Integer itr = null; 

// tương tự cho Double
Double dbl = null; 

// Cái này đúng là ít người biết
// trớ trêu thay, null cũng cast được qua Sring
String myStr = (String) null; 

// cast null qua Integer
Integer myItr = (Integer) null;

4. Bị kiểu nguyên thủy (primitive type) kì thị

Éo le cuộc tình, kiểu nguyên thủy đã có giá trị default. Ví dụ như double là 0.0dboolean là ‘\u0000’boolean là false. Vì vậy:

public class Kieblog { 
public static void main (String[] args) throws java.lang.Exception { 
// Integer có thể gán là null 
Integer i = null;

// Nhưng nếu gán null cho kiểu nguyên thủy thì sẽ NullpointerException 
int a = i; 
} 
}

5. == và !=

Phép so sánh khác và bằng được phép sử dụng. Vì vậy, sẽ rất thuận thiện để phòng tránh bug. Nếu không chắc, hãy if else kiểm tra với một giá trị nghi ngờ có thể bị ám bởi con quỷ nờ un nun.

public class KieBlog { 
public static void main(String args[]) { 
//return true; 
System.out.println(null==null);

//return false; 
System.out.println(null!=null); 
} 
}

6. Đối với phương thức static và non-static

Java null có thể tham chiếu tới method static, tuy nhiên nếu là method non-static, nó sẽ ném Null pointer Exception.

public class Test { 
public static void main(String args[]) { 
Test obj= null; 
obj.staticMethod(); 
obj.nonStaticMethod(); 
} 

private static void staticMethod() { 
//Can be called by null reference 
System.out.println("static method, can be called by null reference"); 
} 

private void nonStaticMethod() { 
//Can not be called by null reference 
System.out.print(" Non-static method- "); 
System.out.println("cannot be called by null reference"); 
} 

}

7. Kết luận

Trên đầy là một số điều thú vị về nờ un nun. Làm việc với null chưa hẳn là đã chán. Vào một ngày đẹp trời có bug và cả team không ai fix được, bạn bay vào, bùm, bốp, chát. Solved -> PHIÊU ngay.

Again, thanks for reading, love u so much!

Tham khảo khóa học lập trình web 6 tháng, đảm bảo 100% công việc đầu ra!

Nguồn: https://topdev.vn/blog/doi-dieu-thu-vi-ve-null-trong-java/

Bài viết liên quan

Leave a Reply

Your email address will not be published.

TÀI LIỆU DEV WORLD
Cẩm nang phát triển bền vững với nghề lập trình!