tutto, ho affrontato un problema quando un scrivere il codice qui sottouna confusione su Java String piscina letterale e la concatenazione di stringa
String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello));
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
poi ho eseguito il mio codice e la stampa console questo
str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
questo mi ha confuso molto perchè la seconda stampa TRUE ma la prima stampa FALSE ?? nella mia comprensione del pool letterale String, quando una stringa definita e JVM controllerà se il pool contiene quella stringa, in caso contrario, inserire la stringa nel pool.
nel mio codice, variabile ciao esiste in pool di stringa," Helo "e" lo "anche in piscina, la mia domanda è
- se il risultato della concatenazione di" Helo "e" lo "esiste nel pool.
- Qual è la differenza tra la definizione di str5 e str10s 'e perché non sono "=="? ? Lo STR5 e str10 si riferiscono alla differente "Ciao” che nel pool di stringa ('==' sembra significare il riferimento è lo stesso oggetto)
la mia versione del JDK: 1.6.0_29
mia IDE: IntelliJ IDEA 11.2
chiunque può farlo notare grazie mille
grazie!questo mi aiuta molto – fuye