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

