According to String#intern(), intern
method is supposed to return the String from the String pool if the String is found in String pool, otherwise a new string
string intern() method is used to create an exact copy of heap string object in string constant pool. The string objects in the string constant pool are automatically interned but string objects in heap are not. The main use of creating interns is to save the memory space and to perform faster comparison of string objects.
Source : What is string intern in java?