Junior — Middle
Can you be sure that a string will always refer to an object from the String Pool when assigned?
sobes.tech AI
Answer from AI
No, not always. In Java, string literals declared in code are automatically placed in the String Pool — a special storage for unique strings. When assigning a string literal to a variable, the reference points to an object from the pool.
However, if a string is created dynamically, for example, using the new String("...") operator or by concatenation, it may not refer to an object from the String Pool, and a new object will be created in the heap.
To explicitly place a string in the pool, you can call the intern() method:
String s1 = new String("hello");
String s2 = s1.intern(); // s2 refers to the string from the pool
Thus, only string literals and strings explicitly interned via intern() are guaranteed to refer to objects from the String Pool.