My Question is what's the use of creating string object in string pool as well as on Heap when we declare String as String a = new String("abc"); What is the advantage ?
And why not we create string in heap when we create string as String a = "abc".
The java language was designed like that. Anything you use between double quotes is a compile time constant and goes into the String pool. So, in your case :
String a = new String("abc");"abc"will be resolved as a compile time constant and thus will be added to the String constants pool for the current JVM.Next, the value of
awill be resolved at run-time and will be added to the heap during run-time.