String constant pool
Literal quantity creation form, stringstr1 = “droid”; The JVM detects this literal quantity, and here we think that no object with droid content exists. If the JVM cannot find the existence of a string object with droid content through the st ring constant pool, it will create the string object, then place the reference of the newly created object into the string constant pool and return the reference to the variable str1
Intern is followed by constant pool
HotSpot VM in JDK7 does not put String constants in native memory, but puts interedstring = > Java heap and Symbols => native memory
Before JDK6, constant pools were part of the permanent zone, but after JDK7, they were moved to the heap for management. The string. int () method obtains a symbol reference in the constant pool, and if the constant string does not exist in the constant pool, the method adds the string to the constant pool. Although the return value of the String.intern method is always equal to the string constant, it does not mean that the inter return of the same string is the same at all times of the system. (Although it is the same in more than 95% of cases) . Because there is a possibility that after an intern, the string is recycled at a certain time and then an intern call is made, then strings with the same literal amount are added to the constant pool again, but the reference positions are different.
Is the String object referenced by new in the method still present after the method is executed?