java中判空
一、概述
java中判等似乎很簡單,==用來判斷對象引用(內存地址)是否相同,equals用來判斷值是否相同。你可以試用String對象輕松區分這一點。
那么在null判等(也就是判空操作)時呢?
可以通過如下代碼明白兩個判等的比較:
String name = null;if(null==name){System.out.println("null==name");//通過}if(name==null){System.out.println(name);System.out.println("name==null");//通過 }String list = null;if(!"demo".equals(list)){System.out.println("demo.equals(list)");//通過}//編譯器會在此處提示一個警告:Null pointer access: The variable list can only be null at this locationif(!list.equals("demo")){System.out.println("list.equals(demo)");//不通過}1.通過紅色字體代碼證明了String類型在==判等時
誰放前,誰放后是一樣的。而null==xxxx這樣的寫法,我覺得只是一個規范習慣的方式,保證你不會少寫=,因為你寫null=xxx編譯器肯定會給你報錯。
那么,除了String類型的對象,其他類型的對象呢?是否在試用==時也是誰放前誰放后沒有區別呢?
NullEquals e = null;if(e==null){System.out.println("e==null");//通過 }if(null==e){System.out.println("null==e");//通過}結果也一樣,證明了null判等這件事上,哪中對象是無所謂的,誰放前放后都可以。
2.通過藍色字體的代碼證明了使用equals方法時,必須將非空的對象放在前面,null的對象一定不能放在前面。
所以這里要養成"".equals()方法來判空的操作
二、注意
這兩個判等操作墨守成規的,你實現某個類,重寫它的equals方法最好也是用來判斷他們的值是否相等,否則其他程序員在使用時容易誤會。
總結:判空時,養成null在前是個好習慣
判等時,為了避免被判斷對象可能為空,所以把肯定不為空的對象放到前面是個好習慣
注:以上代碼都經過測試
?
轉載于:https://www.cnblogs.com/brolanda/p/4702416.html
總結
- 上一篇: twisted 安装时,安装顺序为 zo
- 下一篇: iOS程序UI主线程和定时器相互阻塞的问