刷到一面试题:
答案很简单: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()方法的重写
源码如下:
下图是对象在创建时堆栈所存储的内容
新人 菜鸟不对的地方请多指正