Я декомпилировал некоторый Java-код на днях и нашел это:
String s1 = "something";
String s2 = "something_else";
if (s1 == s2) {
// Path 1
} else {
// Path 2
}
Очевидно, использование '==' для проверки равенства строк плохое
Но я подумал: этот код был скомпилирован и декомпилирован. Если все строки были определены во время компиляции и интернированы, а код был скомпилирован - возможно ли, что s1.equals(s2) можно было бы оптимизировать до 's1 == s2'?