【发布时间】:2015-01-16 22:44:06
【问题描述】:
public class SubString1
{
public static void main(String[] args)
{
String s="Sachin";
String sb=s+"Tendulkar";
String sbc="SachinTendulkar";
System.out.println(sb==sbc);
}
}
输出:假。
请解释一下为什么输出是假的??
我无法理解这种对象创建背后的逻辑。根据我的说法,两者都应该引用同一个实例,并且答案应该是正确的。 请解释。
【问题讨论】:
-
你是如何理解Object内存的?
-
也许this 是一个更好的副本。
-
请注意,如果您说
final String s="Sachin";,结果将变为true。但是你仍然不应该使用==来比较字符串。 -
当然。我从不使用 == 比较字符串。这个问题是在一次采访中被问到的。所以我需要解释一下。
-
字符串
"SachinTendulkar"是一个对象。通过连接“Sachin”和“Tendulkar”创建的字符串是不同的对象。顺便说一句,它们具有相同的值,但这与它们的“对象性”无关,==是在比较对象地址。
标签: java string substring string-literals