如题:
public class T{
public static void main(String[] agrs) {
String s1 = "test";
String s2 = "test";
System.out.println(s1 == s2);
T1 t1 = new T1();
T1 t2 = new T2();
System.out.println(t1.t() == t2.t());
}
}
class T1(){
String t1(){
return "test";
}
}
class T1(){
String t1(){
retrun "test";
}
}
输出的结果是: false true
第二结果为什么是true。
这个问题你需要从String创建的两种方法来看
1.String s1 = new String("test");
2.String s1 = "test";
1.jvm会马上创建一个String对象,然后将该对象的引用返回给用户.
2.jvm首先会在对象池中是否存放有该String对象,如果有,则返回已有的String对象给用户
然后你用的都是第二种 所以==是一定会相等的,因为都是同一个对象
这是我的一些理解,希望对你有帮助
两个都是true才对 字面量的比较
可以参考我之前的帖子
[url]http://www.iteye.com/post/2337877[/url]
两个都是true,你自己回答正确了
http://www.iteye.com/topic/1122533#2337877
字符串常量比较 没有涉及到对象比较 所以比较的是值