第1个回答 2011-10-08
可以这么理解,字符串有两种存在方式,一种是常量池(栈)里的存在,还一种是堆里的存在,具体存在于哪里可以根据赋值判断一下,如果等号右侧存在变量则在堆里,全常量则在栈里,所以,string1,string2都在栈里,而string3右侧的string1是变量,所以会存在于堆里,string3 == string1 + string2判断的是堆里的两个字符串,false是必然的,这和new String("1") == new String("1")等同,如果,string1,string2都添加final修饰符,那么string3也会存在于栈里,此时就是true
第2个回答 2011-10-07
string1 + string2这个玩意是你拼出来的,在内存中是不会分配地址的,因为他不属于任何一个对象,所以输出false!
第3个回答 2011-10-05
System.out.println(string3 == string1 + string2);
string3 == (string1 + string2)是判断string3这个对象与string1 + string2之后形成的对象是不是同一个对象
string3.equals(string1 + string2)是判断string3这个对象与string1 + string2之后形成的对象,俩个对象的值是不是相等。
俩种写法都没有错,但使用的时候要注意你自己需要做的是什么!
第4个回答 2011-10-02
你还没弄清楚==和equals方法的区别啊,,==是判断是不是同一个对象,而equals方法才是判断两个对象的值是不是一样,
你加上System.out.print(string3.equals(string1+string2))就知道了