Question 1concaténation chaîne java et interner
String a1 = "I Love" + " Java";
String a2 = "I Love " + "Java";
System.out.println(a1 == a2); // true
String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
System.out.println(b1 == b2); // false
Dans le premier cas, je comprends que c'est une concaténation de deux chaînes littérales, de sorte que le résultat «J'aime Java » sera interné, donnant le résultat vrai . Cependant, je ne suis pas sûr du second cas.
Question 2
String a1 = "I Love" + " Java"; // line 1
String a2 = "I Love " + "Java"; // line 2
String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
String b3 = b1.intern();
System.out.println(b1 == b3); // false
Les rendements supérieurs faux, mais si je commente les lignes 1 et 2, il retourne vrai. Pourquoi donc?
Nous ne comparons jamais vraiment les chaînes en utilisant l'opérateur == et utilisons la méthode .equals à la place –
@JoeyPinto OP utilise '==' pour en savoir plus sur les Java internes, découvrant un comportement qui semble assez étrange, mais qui a une explication raisonnable. – dasblinkenlight