1й вариант - все true, потому, что константное выражение (
§3.10.5 JLS).
Во 2м варианте уже вызов функции, компилятор не воспринимает это как константное выражение, т.к. оно не соответствует условиям
§15.28 JLS.
JLS §3.10.5Moreover, a string literal always refers to the same instance of class String. This is because string literals -
or, more generally, strings that are the values of constant expressions (
§15.28) - are "interned" so as to share unique instances, using the method String.intern.