【发布时间】:2014-10-05 17:23:51
【问题描述】:
class test {
public static void main(String[] args) {
String a = "Hiabc";
String b = "abc";
String c = "abc";
System.out.println(a.substring(2,5)==b);
System.out.println(b==c);
}
}
output:
false
true
据我了解,Java 的 == 会查找两个比较对象的地址。然而,我不明白为什么 b==c 是真的,因为它们必须有不同的地址。还有,如果b==c,那为什么是a.substring(2,5),即"abc" == b false?
【问题讨论】:
-
因为
substring创建了一个新对象。b和c引用池中的 same 字符串。 -
您能详细解释一下“池”吗?你的意思是Java有所有的字符串库?
-
谷歌一下,Java字符串池的资源是无穷无尽的。
标签: java string substring equals