Я искал пару деталей о том, как Java обрабатывает хранение строк и функцию println (), и в конце концов я создал это:
String s = "Oh No!";
String t = s;
System.out.println("t == s?" + t == s);
System.out.println(t == s);
На консоли напечатано:
false
true
Я ожидал, что условие будет истинным, потому что два объекта явно ссылаются на одну и ту же область памяти.Но не только println игнорирует "t == s?"строка;похоже, что для преобразования логического значения в ложь!Естественно, когда я помещаю круглые скобки вокруг логического значения (t == s) для первого println, отображение выглядит так, как ожидалось:
t == s?true
true
Мой вопрос: почему отсутствие круглых скобок вокруг первого логического выражения нетолько print false, но также заставляет println игнорировать «t == s?»
Это просто необычно и не поддается моему пониманию Java (которое я бы сказал, немного выше уровня AP в качестве эталона).