Java:使用加号 + 运算符连接字符串和表达式时出现意外行为
Java: Unexpected behaviour with concatenating a String and an expression using the plus + operator
考虑以下代码
public class Test {
public static void main(String... strings) {
System.out.println("String, " + false);
System.out.println("String, " + getFalse());
System.out.println("String, " + new TestClass());
System.out.println("String, " + (new TestClass() == null));
System.out.println("String, " + new TestClass() == null);
}
private static class TestClass {
public String toString() {
return "false";
}
}
private static boolean getFalse() {
return false;
}
}
为什么最后一个 System.out.println
打印的输出与其他的不同?我不知道,这是一个错误吗?与加号运算符有关吗? StringBuilder?
"String, " + new TestClass() == null
将被视为
("String, " + new TestClass()) == null
因此打印出 false
(您可以在 operator precedence 中查看更多详细信息)
考虑以下代码
public class Test {
public static void main(String... strings) {
System.out.println("String, " + false);
System.out.println("String, " + getFalse());
System.out.println("String, " + new TestClass());
System.out.println("String, " + (new TestClass() == null));
System.out.println("String, " + new TestClass() == null);
}
private static class TestClass {
public String toString() {
return "false";
}
}
private static boolean getFalse() {
return false;
}
}
为什么最后一个 System.out.println
打印的输出与其他的不同?我不知道,这是一个错误吗?与加号运算符有关吗? StringBuilder?
"String, " + new TestClass() == null
将被视为
("String, " + new TestClass()) == null
因此打印出 false
(您可以在 operator precedence 中查看更多详细信息)