Where are string values stored in memory ?
The location where the string values are stored in memory depends on how we create them.
Approach 1-In the example below we are directly referencing a String literal.
String str1 = "value";
This value will be stored in a "String constant pool" ? which is inside the Heap memory. If compiler finds a String literal,it checks if it exists in the pool. If it exists, it is reused.
String str5 = "value";
In above example, when str5 is created - the existing value from String Constant Pool is reused.
Approach 2-However, if new operator is used to create string object, the new object is created on the heap. There will not be any reuse of values.
//String Object - created on the heap
String str2 = new String("value");