What is the difference between an addition of String Literal and String Object?
For example
String s1 =\"hello\";
String s2 =\"hello1\";
Because the compiler optimizes concatenation of String literals.
In practice this should not matter (most of the time), as you usually want to compare Strings for equality using the equals method and not to check if the object references are the same.
Also note that you can intern s5 using e.g.:
s5 = s5.intern();
This is rarely needed, though.