== 和 equals 比较的区别?

发布时间 2023-08-09 11:35:49作者: 吕伟昊

让我看下面一个例子:

 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中的方法,他比较的是对象,所以会产生两种不同的结果。