java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?相关的知识,希望对你有一定的参考价值。

参考技术A 首先,不为null:
如果为null的话,后面会传值会抛异常,如果你没做异常处理,那么会影响你后面代码的执行,也就是说程序会在抛出异常的那一刻停止运行(非循环情况)
然后,不为空(字符串中不添加任何内容s="")
有些时候,一些程序需要变量有个初始值,比如我想在s="s"的时候将它置空,然后输出,这时候s就不能为空字符串了
不过一般情况下很少做s=""判断,基本上开始都会让s="",然后在代码的执行过程中,让它等于某些值,然后进行某些判断,不过需要注意的是,在开始赋值是不能写成String s;,这样的话s就是null了,这时候如果下面有针对该值的判断,编译器就会报错
参考技术B 因为null 和空串都是空, 看业务需求, 一般情况 在业务上来讲null和""都是空所以要判断, 还有一种是" "这种有些也会判断为空串, 特别是使用第三方工具类时 有些成熟的工具有判断null方法: isNull() , 判断空串 isEmpty() 还有 isBlank () 三种 都是判断空, 第一种值判断 是否为 null , 第二种判断 是否为 null 和 "" , 第三种 判断 是否为 null 和 "" 和" " 参考技术C 举个例子,a,b都是string类型
a="",b=null;
然后我判断是否非空不同时判断(而且必须先判断是否null)
if(a.equals(""));
if(b.equals(""));
然后你会发现b是null,b哪来的equals方法
所以需要先判断是否为null
if(a!=null && a.equals(""));
if(b!=null && b.equals(""));
再或者你可以
if("".equals(b));
if("".equals(b));

java中为啥Integer和String的“==”判断方式不一样

1 为什么
Integer a=1000;Integer b=1000;a==b却返回false?
2 为什么
String a="a";String b="a";a==b却返回true?

1。Integer是包装类,a和b都是类的引用,自然的内存首地址不同。
2。String是工具类。但是,你赋值的时候,没用构造方法,而是在字符串常量池中把"a"赋值给a,"a"赋值给b,当然就相等了。
参考技术A String 的生成SUN公司作过优化。标准的实例化方式应该是 String a = new String("a"); 如果你用标准写法,还是会返回false的。
而用简化的实例化形式 String a = "a"; 会先搜索堆中是否有相同对象,有的话不建立,直接将变量指向这个对象,这样就会有String b = "a";时 b==a的情况。因为b和a 是同一个对象。
参考技术B integer是对象,不可以直接这样比较,需要转换成int然后在比较,
用a.intValue()==b.intValue()这样比较试一试的呢。本回答被提问者采纳
参考技术C 对象不同。int是简化的类型,特别的类。 参考技术D 2 为什么
String a="a";String b="a";a==b却返回true? 这个比较是不可取的.比较字符串,需要使用EQUALS.

以上是关于java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?的主要内容,如果未能解决你的问题,请参考以下文章

java中做字符串非空判断,为啥要同时判断字符串不为null和不等于空串?

java如何判断非空

java基础之----非空判断

如何判断 Tasker 变量是未设置、空字符串还是非空字符串

java非空判断

在java中为啥做了非空判断,但还是报错,比如下面,都做了是不是为null的判断,但是运行到那还是报null错