java字符串比较应该用==还是平等的

这篇文章主要介绍“java字符串比较应该用==还是等于”,在日常操作中,相信很多人在java字符串比较应该用==还是等于问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“java字符串比较应该用==还是等于”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

当用新的字符串(“aaaa”)对字符串做定义时,==会返回假,等于可以返回正常结果。

比如

System.out.println (“a"==癮");//真实System.out.println (“a" .equals (“a"));//真实System.out.println (“a"。equals(新的字符串(“a")));//正确System.out.println (“a"==新的字符串(“a"));//错误的system . out。println(新字符串(“a")==新的字符串(“a"));//错误的system . out。println(新字符串(“a")。equals(新的字符串(“a")));//真正的

以上是网上几乎全部文章所提到过的,也是它们仅仅提到的。但是,在实际项目中,并没有什么参考价值。

我从来没见有人用新的字符串的方式定义过字符串,但是当它们在使用==做判断后,依然可能返回错误的结果。

原因就在于,你不用新的字符串,也有人替你用。

在一般的开发中,字符串总是伴随着字符串类的方法使用的,这些方法中大量使用了新的字符串。一旦使用了这些方法,==就会产生各种各样的错误。

System.out.println (“a" .concat (“a")==癮a");//错误System.out.println (“aa" .replaceAll (“a",“b")==癰b");//错误System.out.println (“A" .toLowerCase ()==癆");//错误System.out.println (“1; 2“.split (“;”) [0]==?“);//错误

更要命的是,这些方法在特定情况下也是能够返回真实的,具体原因可以通过阅读源码获知。

System.out.println (“a" .concat (“;”)==癮");//真实//replaceAll由于用到了StringBuffer的toString方法,会一直返回假System.out.println (“a" .toLowerCase ()==癮");//真正System.out.println (“1; 2“.split (“3”) [0]==?; 2“);//真正的

这会导致一些问题:

<李>

测试时没错误,上线后突然出现一堆错误。,模块一直处于有时正确有时错误的状态,做扩展的时候,在上层添加了一些字符串类的方法,导致下层出现了问题。,…等等

无论哪种,都是很令人郁闷的错误。

你以为==很简单?等出了错误后你就不会这么想了!

当用=时,需要注意的是调用者不可为空,否则会报空指针异常。一般可以通过常量调用平等的方式避免。若两边都是未知量,那就只能先判断一下是否为空了。虽然麻烦点,但总比出错误要好。

字符串str1=癮";字符串str2=癮";System.out.println (“a" .equals (str1));//正确,不会出现空指针System.out.println (str1.equals (“a"));//不建议,若str1为空,会报空指针system . out。println (((str1 !=null),,str1.equals (str2)) | | (str1==零,,str2==null));//正确,但是建议拆成两句写。你难道不觉得这么多逻辑判断很头疼么?

<强>结论

就当==不存在,无脑使用平等的。

到此,关于“java字符串比较应该用==还是等于”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

java字符串比较应该用==还是平等的