在初级java面试的时候,很多面试官喜欢问equals与==的区别,这个问题既是基础也是重点,在工作中经常会用到。
==比较的是栈内存中存放的对象的堆内存地址,比较的既是指也是地址。
equals比较的是是值,一般值相同,equals的结果就为true。
==一般用于常量和对象的比较。比如:
int a = 10;
int b = 10;
double c = 10.0;
long d = 10l;
a==b? true
a==c? true
a==d? true
equals 一般用于判断值是否相同。比如:
String a = "123";
String b = "1";
String c= "23";
a=b+c? true
所以在做比较的时候常量和对象比较常用==,因为比较值和地址。而字符串的比较一般用equals,只比较值是否相同。