在java中System.out.println的奇怪行为

Dre*_*mer 1 java

class Foo {}
class Boo extends Foo {}

public class Tester {
 public static void main(String[]args) {
 Foo f = new Foo();
 Boo b = new Boo();
 System.out.println("****"+f==b+"****");//line 1
 boolean flag = f==b;
 System.out.println("****"+flag+"****");//line 2
 }
}
Run Code Online (Sandbox Code Playgroud)

对于line1输出,false
对于line2输出,****false****
对于第2行,它正确连接.

我的问题是为什么第1行它只是打印值而不是正确的星形输出.

aeb*_*bis 6

+操作的优先级高于==(这使得当你想比较数学表达式的意义上),所以"****"+f==b+"****"是一样的("****"+f)==(b+"****")