class KK
{
public static void main(String args[])
{
String s1="1234";
String s2,s3;
s2="5678";
s3="5678";
System.out.println(s2==s3);
}
}//第一个程序
class KK
{
public static void main(String args[])
{
String s1="1234";
String s2,s3;
s2=s1+"5678";
s3=s1+"5678";
System.out.println(s2==s3);
}
}//第二个程序
请问各位前辈:为什么第一个程序结果会是真而第二个就为假了呢?
还有一个问题:“地址和引用是一回事吗?”请前辈们指教谢谢大家
{
public static void main(String args[])
{
String s1="1234";
String s2,s3;
s2="5678";
s3="5678";
System.out.println(s2==s3);
}
}//第一个程序
class KK
{
public static void main(String args[])
{
String s1="1234";
String s2,s3;
s2=s1+"5678";
s3=s1+"5678";
System.out.println(s2==s3);
}
}//第二个程序
请问各位前辈:为什么第一个程序结果会是真而第二个就为假了呢?
还有一个问题:“地址和引用是一回事吗?”请前辈们指教谢谢大家
第二个程序,由于有+,所以在运行期会在堆创建2个新的对象,地址不同,内容相同
==比较的是地址,所以是false楼主如果不是很理解string,可以先简单的人为,只要有+,并且+的两边不全是常量,就等于是new关键词好比,s2=new String("5678");
s3=new String("5678");
s2==s3返回的是false
通常比较字符串是否相同用equals方法