The string pool allows string constants to be reused, which is possible because strings in Java are immutable. If you repeat the same string constant all over the place in your Java code, you can actually have only one copy of that string in your system, which is one of the advantages of this mechanism.
When you use String s = "string constant";
you get the copy that is in the string pool. However, when you do String s = new String("string constant");
you force a copy to be allocated.