Con la seguente riga non si sta creando un nuovo oggetto String
nel mucchio, ma riutilizzando una stringa letterale (se disponibili):
String message = "Hai";
"Hai"
è una stringa letterale in piscina letterale stringa. Poiché le stringhe sono immutabili, sono riutilizzabili e quindi vengono raggruppate nel pool letterale di stringhe dalla JVM. E questo è il modo consigliato, perché lo stai riutilizzando.
Ma, con il seguente in realtà si sta creando un nuovo oggetto (nel mucchio):
String message = new String("Hai");
new String("Hai")
è un nuovo String
oggetto. In questo caso, anche se il letterale "Hai"
era già nel lotto letterale stringa, viene creato un nuovo oggetto. Questo non è raccomandato perché è probabile che si possa finire con più di uno String
oggetti con lo stesso valore.
vedere anche questo post: Questions about Java's String pool
Esistono altre classi che non richiedono nuova per creare l'oggetto ??
In realtà, non è possibile creare alcun oggetto in Java senza utilizzare la parola chiave new
.
ad es.
Integer i = 1;
fa, non significa che l'oggetto Integer
si crea senza utilizzare new
. Semplicemente non è necessario per noi utilizzare esplicitamente la parola chiave new
. Ma sotto il cofano, se l'oggetto Integer
con valore 1 non esiste già nella cache (gli oggetti Integer
vengono memorizzati nella cache da JVM), per crearlo verrà utilizzata la parola chiave new
.
fonte
2011-12-30 14:26:44
sonu thomas :)! – jenuine
@jenuine hmmmm .... –