关于==和equals的问题

首先equals没有重写的话和==是没有区别的。如果是基本数据类型使用==,则判断的是值是否相等,如果是引用类型使用==,则判断的是地址是否相等。

通常犯的错误就是字符串的equals和==的比较,因为equals的底层是实现了重写的,所以与==就有区别了,其中equals比较的是内容,==比较的是引用类型的地址。

String a = "abc"; 是从常量池获取,String b = new String("abc");是从堆内存中new出来一个引用对象。所以自然a==b返回的是flase,a.equals(b)返回的是true。

如果String c = b,本质就是把b的引用地址值传递给了c,所以c==b返回的是true。

 

posted @ 2022-02-13 05:13  古家杰  阅读(39)  评论(0)    收藏  举报