项目中遇到的问题,记录一下,当做提醒。
==比较引用,equals 比较值
1、java中字符串的比较:==
我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题
String a="abc";String b="abc"
那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存
一份,所以a和b指向的是同一个对象;
String a=new String("abc"); String b=new String("abc");
那么a==b将返回false,此时a和b指向不同的对象。
2、用equals方法比较的是字符串的内容是否相同
String a=new String("abc");
String b=new String("abc");
a.equals(b);
将返回true。
注意:将常量放置在左侧,可以避免左侧undefined异常
("1001").equals(params.get("approveResult"));
总结:
1. ==是两边的完完全全是一致的,才返回true,否则返回false;
2. equal是判断两个对象中的内容是否一致;
3.使用“=”赋值时,如果内存中已经有这个字符串,就会直接将其地址给这个变量,不会产生新的字符串;
4.使用“+”或者“concat”方法拼接字符串的时候,会创建一个新的字符串,占用新的内存空间,因此使用“==”判断时返回false;
参考:https://blog.csdn.net/weixin_42350212/article/details/80768041
https://www.jianshu.com/p/3cd1912211d4