【发布时间】:2018-10-24 17:45:56
【问题描述】:
我一直在寻找有关 Java 如何处理字符串存储和 println() 函数的一些细节,最终我创建了这个:
String s = "Oh No!";
String t = s;
System.out.println("t == s?" + t == s);
System.out.println(t == s);
控制台打印:
false
true
我希望条件为真,因为这两个对象清楚地引用了相同的内存位置。但是 println 不仅忽略了“t == s”吗?细绳;它似乎将布尔值转换为false!自然,当我在第一个 println 的 (t == s) 布尔值周围加上括号时,显示结果如预期:
t == s?true
true
我的问题是:为什么第一个布尔值周围缺少括号不仅打印错误,而且还导致 println 忽略“t == s?”
这很不寻常,违背了我对 Java 的理解(我会说它作为基准略高于 AP 水平)。
【问题讨论】:
-
你错过了
+的运算符优先级。
标签: java string boolean memory-address println