public class StringDemo {
public static void main(String[] args) {
String str1="Hello";
String str3=str1;
System.out.println("str1==str3"+":"+str1==str3);
}
}
为什么是输出是false 最好用内存图解解释下,谢谢了 内存知识不太懂,
你是直接定义的字符串常量,本质上str1和str3是指向同一个常量池的。你的代码之所以输出false是因为你真正执行的是字符串"str1==str3:hello"和str3进行等操作
优先执行前面的字符串加操作,后执行后面的==操作了。
修正测试代码:
boolean flag = str1==str3;
System.out.println("str1==str3:"+flag);
或者修正如下(加一括号提高优先级)
System.out.println("str1==str3"+":"+(str1==str3));