Java中equals和==的区别

#Java中equals和==的区别

区别1:equals是方法,==是比较运算符;

区别2:基本数据类型比较时,只能用==,比较的是值是否相等;

区别3:引用数据类型比较时,==比较的是引用地址是否相等,而equals对于引用数据类型的比较,分两种情况:

情况1:引用数据类型没有对equals进行重写,则比较的是引用地址,因为所有引用数据类型均继承自Object,而Object的equals方法返回的是==比较结果,如下:

Java中equals和==的区别

情况2:引用数据类型对equals方法进行了重写,则进行值比较。例如String对equals的重写如下:

Java中equals和==的区别

<<<PS:Java中基本数据类型和引用数据类型区别 https://blog.****.net/JustinQin/article/details/90480683

<<<附:equals和==区别常见笔试

#例1

String s1 = "abc";

String s2 = s1;

String s3 = new String("abc") ;

String s4= new String("abc") ;

 

System out.println(s1==s2);

System out.println(s1.equals(s2));

System out.println(s1==s3);

System out.println(s3.equals(s4));

System out.println(s3==s4);

输出答案:

true

true

false

true

false

#例2

String s1 = "a" + "b";

String s2 = "ab";

System out.println(s1==s2)

输出答案:

true

两个或多个字符串常量相加,预编译的时候,“+”号会被优化,多个字符串自动会合成一个字符串常量;