3 回答
TA贡献1806条经验 获得超8个赞
true
equals
String s = "a" + "bc"; String t = "ab" + "c"; System.out.println(s == t);
s
t
String
s
t
String
TA贡献1776条经验 获得超12个赞
加载包含字符串文本的类或接口可能会创建一个新的String对象(§2.4.8)来表示该文本。如果已经创建了一个字符串对象来表示该文本的前一次出现,或者在一个字符串对象上调用了String.intern方法,则可能不会发生这种情况。
这可能不会发生String
1: a := "one" --> if(pool[hash("one")] == null) // true pool[hash("one") --> "one"] return pool[hash("one")]2: b := "one" --> if(pool[hash("one")] == null) // false, "one" already in pool pool[hash("one") --> "one"] return pool[hash("one")]
a
b
(a == b) && (a.equals(b)) == true
.
1: a := "one"2: b := new String("one")
"one"
(a == b) && (a.equals(b)) == false
(a == b) && (a.equals(b))
可能是 true
或 false
(总使用 equals
比较字符串) 不要使用反射来更改背景 char[]
(因为您不知道是谁在使用该字符串)
添加回答
举报