Tag,

eins vorneweg: Bitte keine Anmerkungen, wie man es anders macht. Die Aufgabe ist so, wie sie ist. Wir wollen lediglich verstehen.

Ein Bekannter und ich machen gerade so Testdurchläufe für den OCA. Hier ist erstmal der Code:

public class Test {
  public static void main(String[] args) {
    final int i1 = 1;
    final Integer i2 = 1;
    final String s1 = ":ONE";
    String str1 = i1 + s1;
    String str2 = i2 + s1;

    System.out.println(str1 == "1:ONE");
    System.out.println(str2 == "1:ONE");
  }
}

Wir verstehen nicht, wie die Konsolenausgaben zustande kommen.

Und zwar wird:

true
false

ausgegeben.

Aber wo ist da der entscheidende Unterschied, warum bei dem Zweiten false ausgegeben wird? Vom Prinzip ist es ja das Gleiche?!

Eine Erklärung wäre super.