Đôi điều thú vị về null trong 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.

Sự khác biệt giữa zero và null trong java.
Sự khác biệt giữa zero và null. Trường hợp này thì cả 2 đều tệ =)))

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é!.

tên miền null.vn đã có người mua
Giá ra đi 40 cành cọ vàng

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 =))

a null pointer funny
Nguồn ảnh asciiville.com
// 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ư double0.0d, boolean‘\u0000’, booleanfalse. 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; 
    } 
} 
Bị kiểu nguyên thủy kì thị thì cũng thôi đi, giờ đến lấy List[0] cũng không có nữa. Hic

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.

Feel like a hero, bro
Blank, Empty và NULL

Again, thanks for reading, love u so much!



Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *