Java中常用判空与判等方法详解

 更新时间:2025年03月04日 08:56:55   作者:会说法语的猪  
java中感觉判空的一些方法太多了,感觉有点儿乱糟糟的,所以这篇文中就为大家简单总结一下在项目中常用的一些方法吧,希望对大家有所帮助

java中感觉判空的一些方法太多了,感觉有点儿乱糟糟的,所以这篇就简单总结一下我在项目中常用的一些方法吧,并不全哈,只是自己常用的,平时也够用 

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会导致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.双等于(==)

先说下双等于,其实开发中比较少用==。==操作符用于比较两个变量的值是否相等。不过,它的行为取决于被比较的变量类型

2.基本数据类型

当==用于比较如int, float, charr等基本数据类型的变量时,它比较的是这些变量的实际值。例如,int a = 5; int b = 5;  则 a == b 返回 true,因为它们的值都是5

3.引用类型

当==用于比较引用类型(如类、接口、数组等)时,它比较的是两个引用是否指向内存中的同一个对象地址,而不是比较对象的内容或值。例如,如果你有两个分别创建的String对象,即使它们包含相同的字符序列,使用==比较它们也会返回false,除非这两个引用实际上指向的是同一个对象实例。

如果你想要比较两个对象的内容是否相等,应该使用.equals()方法。比如,对于String类,"hello".equals("hello") 将返回 true,因为它比较的是字符串的内容而非它们的内存地址。

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,直接调用 equals() 可能会导致 NullPointerException。为了避免这种情况,将 equals() 调用放在非 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("相等");
        }
    }
}

到此这篇关于Java中常用判空与判等方法详解的文章就介绍到这了,更多相关Java判空与判等内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC拦截器——实现登录验证拦截器的示例代码

    SpringMVC拦截器——实现登录验证拦截器的示例代码

    本篇文章主要介绍了SpringMVC拦截器——实现登录验证拦截器的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • Java中的synchronized 优化方法之锁膨胀机制

    Java中的synchronized 优化方法之锁膨胀机制

    这篇文章主要介绍了Java中的synchronized 优化方法之锁膨胀机制,锁膨胀机制是提升 synchronized 性能最有利的方法之一,下面我们就来看看什么事锁膨胀及锁膨胀的各种细节
    2022-05-05
  • Java遍历json字符串取值的实例

    Java遍历json字符串取值的实例

    下面小编就为大家分享一篇Java遍历json字符串取值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • JAVA多线程处理for循环数据详细讲解

    JAVA多线程处理for循环数据详细讲解

    这篇文章主要给大家介绍了关于JAVA多线程处理for循环数据的相关资料,我们在代码中经常需要使用for循环这个操作来达到目的,而当for循环的次数过多时我们会发现执行效率会变的很低,整体耗时非常多,需要的朋友可以参考下
    2023-07-07
  • spring boot security设置忽略地址不生效的解决

    spring boot security设置忽略地址不生效的解决

    这篇文章主要介绍了spring boot security设置忽略地址不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 类似微信说话功能的录音处理代码分享

    类似微信说话功能的录音处理代码分享

    这篇文章主要介绍了类似微信中说话功能的录音处理代码,需要大家自己加UI界面,大家参考使用吧
    2014-01-01
  • 浅谈Java源码ConcurrentHashMap

    浅谈Java源码ConcurrentHashMap

    最近刚入门java,觉得看源码挺有意思的,就记录一下一些常用类的源码吧,从而能够总结一些使用细节.本文对源码ConcurrentHashMap介绍的非常详细,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Spring Security OAuth2实现使用JWT的示例代码

    Spring Security OAuth2实现使用JWT的示例代码

    这篇文章主要介绍了Spring Security OAuth2实现使用JWT的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • springboot整合Atomikos的示例详解

    springboot整合Atomikos的示例详解

    这篇文章主要为大家详细介绍了几种分布式事务的解决方案的两阶段提交Atomikos,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2024-11-11
  • struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成简单demo

    struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成简单demo

    本篇文章主要介绍了struts2.2.3+spring3.1.0 + mybatis3.1.0框架整合,结合在一起实现用户的增删改查功能,有需要的可以了解一下。
    2016-11-11

最新评论