NỘI DUNG BÀI VIẾT
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.0d, boolean 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/