Java中常用判空與判等方法詳解
java中感覺判空的一些方法太多了,感覺有點(diǎn)兒亂糟糟的,所以這篇就簡單總結(jié)一下我在項(xiàng)目中常用的一些方法吧,并不全哈,只是自己常用的,平時(shí)也夠用
1. 判空
1.1 判斷字符串是否為空
下面是判斷字符串是否為空常用的我常用的四種方式:
package com.wft.test; import org.apache.commons.lang3.StringUtils; public class EmptyTest { public static void main(String[] args) { // 1. 判斷字符串是否為空 String str = null; // 方式1 if(StringUtils.isEmpty(str)) { // StringUtils.isNotEmpty 判斷不為空 System.out.println("為空1"); } // 方式2 if(str == null || str.isEmpty()) { System.out.println("為空2"); } // 方式3 if(str == null || "".equals(str)) { // 直接使用str.equals("")如果str是null會(huì)導(dǎo)致NullPointerException System.out.println("為空3"); } // 方式4 if(str == null || str.length() == 0) { System.out.println("為空4"); } } }
1.2 判斷List集合是否為空
package com.wft.test; import java.util.ArrayList; import java.util.List; import java.util.Objects; public class EmptyTest { public static void main(String[] args) { List<Object> list = new ArrayList<>(); // 方式1: if(Objects.isNull(list) || list.isEmpty()) { System.out.println("為空1"); } // 方式2: if(Objects.isNull(list) || list.size() == 0) { System.out.println("為空2"); } } }
1.3 判斷Map集合是否為空
package com.wft.test; import java.util.HashMap; import java.util.Map; public class EmptyTest { public static void main(String[] args) { Map map = new HashMap(); if(map == null || map.isEmpty()) { System.out.println("為空"); } } }
2. 判等
1.雙等于(==)
先說下雙等于,其實(shí)開發(fā)中比較少用==。==操作符用于比較兩個(gè)變量的值是否相等。不過,它的行為取決于被比較的變量類型
2.基本數(shù)據(jù)類型
當(dāng)==用于比較如int, float, charr等基本數(shù)據(jù)類型的變量時(shí),它比較的是這些變量的實(shí)際值。例如,int a = 5; int b = 5; 則 a == b 返回 true,因?yàn)樗鼈兊闹刀际?
3.引用類型
當(dāng)==用于比較引用類型(如類、接口、數(shù)組等)時(shí),它比較的是兩個(gè)引用是否指向內(nèi)存中的同一個(gè)對象地址,而不是比較對象的內(nèi)容或值。例如,如果你有兩個(gè)分別創(chuàng)建的String對象,即使它們包含相同的字符序列,使用==比較它們也會(huì)返回false,除非這兩個(gè)引用實(shí)際上指向的是同一個(gè)對象實(shí)例。
如果你想要比較兩個(gè)對象的內(nèi)容是否相等,應(yīng)該使用.equals()方法。比如,對于String類,"hello".equals("hello") 將返回 true,因?yàn)樗容^的是字符串的內(nèi)容而非它們的內(nèi)存地址。
2.1 判斷兩個(gè)字符串是否相等
package com.wft.test; import java.util.Objects; public class empty { public static void main(String[] args) { String str1 = "wft"; String str2 = "wft"; /** * 方式1 * 注意:如果其中一個(gè)字符串可能為 null,直接調(diào)用 equals() 可能會(huì)導(dǎo)致 NullPointerException。為了避免這種情況,將 equals() 調(diào)用放在非 null 的對象上。或者采用方式2 */ if(str1.equals(str2)) { System.out.println("相等"); } /** * 方式2 */ if(Objects.equals(str1, str2)) { System.out.println("相等"); } } }
2.2 判斷兩個(gè)List集合是否相等
package com.wft.test; import java.util.Arrays; import java.util.List; public class EmptyTest { public static void main(String[] args) { List<String> list1 = Arrays.asList("a", "b", "c"); List<String> list2 = Arrays.asList("a", "b", "c"); if(list1.equals(list2)) { // 注意空指針的情況 System.out.println("相等"); } } }
2.3 判斷兩個(gè)List集合是否相等
package com.wft.test; import java.util.HashMap; import java.util.Map; public class EmptyTest { public static void main(String[] args) { Map<String, String> map1 = new HashMap<>(); map1.put("key1", "value1"); map1.put("key2", "value2"); Map<String, String> map2 = new HashMap<>(); map2.put("key2", "value2"); map2.put("key1", "value1"); if(map1.equals(map2)) { System.out.println("相等"); } } }
到此這篇關(guān)于Java中常用判空與判等方法詳解的文章就介紹到這了,更多相關(guān)Java判空與判等內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC攔截器——實(shí)現(xiàn)登錄驗(yàn)證攔截器的示例代碼
本篇文章主要介紹了SpringMVC攔截器——實(shí)現(xiàn)登錄驗(yàn)證攔截器的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02Java中的synchronized?優(yōu)化方法之鎖膨脹機(jī)制
這篇文章主要介紹了Java中的synchronized?優(yōu)化方法之鎖膨脹機(jī)制,鎖膨脹機(jī)制是提升?synchronized?性能最有利的方法之一,下面我們就來看看什么事鎖膨脹及鎖膨脹的各種細(xì)節(jié)2022-05-05JAVA多線程處理for循環(huán)數(shù)據(jù)詳細(xì)講解
這篇文章主要給大家介紹了關(guān)于JAVA多線程處理for循環(huán)數(shù)據(jù)的相關(guān)資料,我們在代碼中經(jīng)常需要使用for循環(huán)這個(gè)操作來達(dá)到目的,而當(dāng)for循環(huán)的次數(shù)過多時(shí)我們會(huì)發(fā)現(xiàn)執(zhí)行效率會(huì)變的很低,整體耗時(shí)非常多,需要的朋友可以參考下2023-07-07spring boot security設(shè)置忽略地址不生效的解決
這篇文章主要介紹了spring boot security設(shè)置忽略地址不生效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Spring Security OAuth2實(shí)現(xiàn)使用JWT的示例代碼
這篇文章主要介紹了Spring Security OAuth2實(shí)現(xiàn)使用JWT的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成簡單demo
本篇文章主要介紹了struts2.2.3+spring3.1.0 + mybatis3.1.0框架整合,結(jié)合在一起實(shí)現(xiàn)用戶的增刪改查功能,有需要的可以了解一下。2016-11-11