L'oggetto stringa è immutabile.
String str = "ObjectOne"+"ObjectTwo";
is same as
String str = "ObjectOneObjectTwo";
Immutabile, intendiamo che il valore memorizzato nell'oggetto String non può essere modificato. Quindi la prossima domanda che ci viene in mente è "Se String è immutabile, allora come posso modificare il contenuto dell'oggetto ogni volta che lo desidero?". Beh, per essere precisi non è lo stesso oggetto String che riflette le modifiche che fai. Internamente viene creato un nuovo oggetto String per eseguire le modifiche.
Quindi supponiamo si dichiara un oggetto String:
String myString = "Hello";
Successivamente, si vuole aggiungere “Guest” per la stessa stringa. cosa fai?
myString = myString + " Guest";
Quando si stampa il contenuto di myString, l'output sarà "Ciao ospite". Sebbene abbiamo fatto uso dello stesso oggetto (myString), internamente è stato creato un nuovo oggetto nel processo. Quindi mystring si riferirà a "Hello Guest". Il riferimento a Ciao è perso.
String s1 = "hello"; //case 1
String s2 = "hello"; //case 2
Nel caso 1, il letterale s1 viene creato di recente e tenuto nella piscina. Ma nel caso 2, letteralmente s2 si riferisce a s1, non ne creerà uno nuovo.
if (s1 == s2) System.out.println ("uguale"); // Stampe uguali
String s= "abc"; //initaly s refers to abc
String s2 =s; //s2 also refers to abc
s=s.concat("def"); // s refers to abcdef. s no longer refers to abc.
c'era domanda simile qui: http://stackoverflow.com/questions/15669067/fastest-way-of-converting-integer-to-string-in-java – msi