When we create string literals jvm maintains all of them in pool known as String pooling.
for exapmle,
String str1 = "Hello"; //case 1
String str2 = "Hello"; //case 2
In case 1, iteral str1 is created newly and kept in the pool. But in case 2, literal str2 refer the str1, it will not create new one instead.
if(str1 == str2) System.out.println("equal"); //Prints equal.
// case 3
String newString1 = new String("Hello");
String newString2 = new String("Hello");
if(newString1 == newString2) System.out.println("equlal"); //No output.
Pooling is done for only string literals. In case 3 it gives no output because both string has a different reference.
No comments:
Post a Comment