Sì, per rendere le cose più semplici si può pensare ad esso come prelevamento dallo stesso indirizzo, ma per essere più precisi le variabili mantengono lo stesso riferimento - identificatore che JVM può utilizzare per mappare correttamente l'indirizzo di memoria dell'oggetto (poiché gli oggetti possono essere spostati in memoria).
È possibile effettuare delle prove codice come questo:
String w1 = "word";
String w2 = "word";
String b = new String("word"); // explicitly creating String by calling `new` operator
// won't put it in string pool
System.out.println(w1 == w2); // true -> variables hold same reference
System.out.println(w1 == b); // false -> variable hold different references
b = b.intern(); // check if pool contains this string, if not put this string in pool,
// then return reference of such string from pool and store it in b variable
System.out.println(w1 == b); // true -> now w1 and b hold same reference
Penso che la risposta è sì. –