一、“==”是一个比较运算符,可以比较基本数据类型,也可以比较引用数据类型;
(1)“==”比较基本数据类型是比较其的内容(值)是否相等;
(2)“==”比较引用数据类型是比较其地址值是否相等;
二、equals()是Object类中的一个方法,Object类中的equals()默认比较地址值是否相等;但是大多数类都对equals()进行了重写;比如String类对其进行重写,是其比较内容(值)是否相等;
public class Demo {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);//s1和s2在存在于堆内存里,所以俩个地址值不相同,即false
System.out.println(s1.equals(s2));//String类中重写了equals(),比较字符串内容,即true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);//s3存在于堆内存,但s4在方法区的常量池中,所以地址值不相同,即false
System.out.println(s3.equals(s4));//String类中重写了equals(),比较字符串内容,即true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);//s5存在于常量池,当创建s6时会发现常量池内存在“hello”,
所以s6覆盖了s5,或者说是s6直接引用了s5的内容(值),所以地址值相同,即true
System.out.println(s5.equals(s6));//String类中重写了equals(),比较字符串内容,即true
}
}
8万+

被折叠的 条评论
为什么被折叠?



