☰ 总览更新 10-12 22:33

03 · 栈和堆,== 和 equals

我的原话

比喻

== 和 equals

String a = new String("hi");   // 仓库#1
String b = new String("hi");   // 仓库#2
a == b        // false:比便签,#1 ≠ #2
a.equals(b)   // true :进仓库比内容

== 比便签;equals 进仓库比内容。 比字符串内容永远用 equals。

两把钥匙

User u1 = new User("张三");
User u2 = u1;          // 没有 new → 只抄编号,同一个对象
u2.name = "李四";
u1.name                // 李四(真跑过 T6.java,u1 == u2 是 true)

数 new:有几个 new 仓库里就有几个对象;= 只是抄编号。

为什么这样设计

对象可能很大,方法之间传来传去只抄编号,比复印整个对象快。

题

题 我答 结果
u2 = u1; u2.name="李四"; u1.name? u1 还是张三 ❌ 李四:没有 new,u1 u2 是同一个房间的两把钥匙
两次 new,改 u2,u1.name? 几个对象? 张三,两个对象 ✅