刷到一面试题:

答案很简单:t1.equals(t2) / false
t1.aString.equals(t2.aString) / true
“==”和“equals”在日常项目中普遍被用到。
如果比较的是基本数据类型“==”和“equals”比较的都是对象的值。
如果比较的是引用数据类型“==”比较的是内存中的地址,“equals”比较的是对象的值
虽然知道是这么用的但是好像重来没看过源码,突然有点好奇,想看看源码是怎么写的
t1.equals(t2)
当比较是两个对象时,调用的是Object类里的 equals()方法
源码如下:

当两个对象的内存地址相同是返回true否者为false
t1.aString.equals(t2.aString)
当比较的对象是两个支付串时,调用的是String类里的equals()方法,是对Object类里equals()方法的重写
源码如下:



下图是对象在创建时堆栈所存储的内容

新人 菜鸟不对的地方请多指正
1257

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



