Java:使用plus +运算符连接String和表达式的意外行为

Nat*_*ams -1 java string behavior operator-keyword

考虑以下代码

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;
   }
}
Run Code Online (Sandbox Code Playgroud)

为什么最后一次System.out.println打印的输出与其他输出不同?我不知道,这是一个错误吗?是否与plus运算符有关?StringBuilder?

Pau*_* Lo 5

"String, " + new TestClass() == null

将被视为

("String, " + new TestClass()) == null

因此打印出来 false

(您可以在运算符优先级中查看更多详细信息)