Program to demonstrate working of intern() method in String class through a example.
Output of the program :
package com.hubberspot.examples; public class InternDemo { public static void main(String[] args) { // Using new String() each time the line // executes a new instance is created // Avoid this kind of usage of String // creation String name1 = new String("Hubberspot"); // String instance should be created by // below statement. It maintains and avoids // new creation of instance each time // the line gets executed. String name2 = "Hubberspot"; // Before calling intern() method lets test reference value // equality of both name1 and name2 String objects. if(name1 == name2){ System.out.println("Before calling intern() : name1 == name2 is true"); } else { System.out.println("Before calling intern() : name1 == name2 is false"); } // Whenever an String object is created by using new operator // always a new object gets created in the heap whether // it has same value or not. // Whenever an String object is created by using "" a constant // string object gets created in the heap memory. // The difference is shown by above example i.e before calling // intern() method. // When the intern method is invoked, if the pool already // contains a string equal to this String object as determined // by the equals(Object) method, then the string from the pool // is returned. Otherwise, this String object is added to the // pool and a reference to this String object is returned. name1 = name1.intern(); // After intern method gets executed name1 is added to the // String constant pool and reference is returned back to // name1. // Below results shows the variation in the result ... if(name1 == name2){ System.out.println("After calling intern() : name1 == name2 is true"); } else { System.out.println("After calling intern() : name1 == name2 is false"); } } }
Output of the program :