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 中查看更多详细信息)