String Pool is a pool of strings stored in Java heap memory. String objects can be created either by new operator or by specifying the values in double quotes.
When a new string is created using double quotes, JVM searches string pool for the string with the same value. if it finds a string which matches the values, it will return the reference of the string. Else it will create a new string in the pool and returns that reference.
String s1 = "Cat";
String s2 = "Cat";
if(s1 == s2) System.out.println("equal"); //Prints equal.
When new operator is used to create a string, String class will be forced to create a new String object. To put the newly created string into the pool or assign it to another string, use intern().
String n1 = new String("ABCD");
String n2 = new String("ABCD");
if(n1 == n2) System.out.println("equal"); //No output.