让我看下面一个例子:
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
我们定义了一个数组,众所周知,数组是new出来的一个对象,当我们执行第一行代码时,就已经把他放到了堆内存中,我们定义的s1,s2基于chs数组创建的两个字符串,这两个字符串创建时在堆内存中开辟了两个新的内存空间,两个值所在的地址传给了s1,s2,关系运算符==比较的是两个值的地址,适合用于基本数据类型和引用数据类型,而我们使用的是equals重写Object中的方法,他比较的是对象,所以会产生两种不同的结果。
翻译
搜索
复制
标签:String,区别,s2,s1,equals,chs,new,比较 From: https://www.cnblogs.com/weihaohome/p/17616444.html