K139 правильно, но позвольте мне объяснить, почему.На первый взгляд это сложно, но все сводится к приоритету оператора.
См. Учебник по операторам API Java
Аддитивные операторы +
предшествуют равенству ==
Итак, System.out.println(o1==o2 + " " + o1.equals(o2));
Более ясно передается аргумент: o1 == (o2 + " " + o1.equals(o2))
Это проверяет, эквивалентна ли o1
строка типа "java.lang.Object@123a439b false"
,результат равен false
, и вы видите это как единственный выход.
Добавление круглых скобок вокруг первой проверки эквивалентности приводит к выполнению операций в указанном вами порядке.
System.out.println((o1==o2) + " " + o1.equals(o2));
Это дает: false false