Đôi điều thú vị về null trong java
Bài viết được sự cho phép của tác giả Kiên Nguyễn
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.
Xem thêm các chương trình tuyển dụng Java hấp dẫn trên TopDev
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!
Bài viết gốc được đăng tải tại kieblog.vn
Có thể bạn quan tâm:
- 5 điều lập trình viên Java Developer chắc chắn sẽ thích ở Kotlin
- Senior & Junior Java Dev – điều gì làm nên sự khác biệt
- Javascript ES6 – Đôi điều thú vị có thể bạn chưa biết
Xem thêm Việc làm IT hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?