String vs String Literal vs StringBuilder

// String Literal uses String common pool.
// String is immutable object.
// StringBuilder is mutable object.

// + operator (new StringBuilder(String.valueOf(str1)).append(str2).toString();
String str1 = "P";
String str2 = "P";
String str3 = str1 + str2;

// str1.concat(str2) method creates new String
String str4 = str1.concat(str2);