Java中的字符串比较问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:23:53
class T
{
public static void main(String []args)
{
String s1="a";
String s2="b";
String s3="ab";
String s4="ab";
s1+=s2;
s2=s3;
System.out.println("s3==s4"+s3==s4);
System.out.println("s2==s3"+s2==s3);
System.out.println("s1==s3"+s1==s3);
System.out.println("s1==s4"+s1==s4);
}
}
请问大家,程序的执行结果是多少,怎么理解的与实际的结果不同啊

全部为false
因为+的优先级比== 高
System.out.println("s3==s4"+s3==s4);
相当于:System.out.println(("s3==s4"+s3)==s4);

你应该用:System.out.println("s3==s4"+(s3==s4));

一楼的,你理解错了!!!!!不是什么优先级,那是打印的字符串,根本没关系;

这题全部是false,不用看,这是考的是内址所在的地址,java中全是对象,而这里的虽然都是“ab”,值相同,而对象是s1,s2,s3,s4;各为不同的,而==是看对象的

是全部是false,==是比较对象引用的是不是同一块内存地址,而equals比较则是值比较,上题如果是s3.equals(s4)那么输出就是true了!

关键是要理解==和equals的区别

嗯 同意一楼的 你输出语句相当于
相当于:System.out.println(("s3==s4"+s3)==s4);
全是false;