问题的第一部分很简单:Java编译器将多个字符串文字的串联视为一个字符串文字,即
"I Love" + " Java"
和
"I Love Java"
是两个完全相同的字符串文字,可以正确地进行intern。
同样的实习行为并 不能 适用于
+=对字符串的 *** 作,所以
b1并
b2在运行时实际构建。
第二部分比较棘手。回忆
b1.intern()可能返回的对象
b1或
String与其相等的其他对象。当您保持
a1和时
a2,您会
a1从呼叫返回
b1.intern()。当您注释掉
a1和时
a2,没有要返回的现有副本,因此
b1.intern()将您
b1自己退还给您。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)