public class StringOperation { private static final String A; private static final String B; static { A = "ab"; B = "c"; } public static void main(String[] args) { //false String s = "abc"; String s1 = "ab"; String s2 = "c"; String s3 = s1 + s2; System.out.println(s==s3); //true String s4 = "abc"; System.out.println(s==s4); //true String s5 = "a" + "bc"; System.out.println(s==s5); //false String s6 = "a".concat("bc"); System.out.println(s==s6); //true final String s7 = "ab"; final String s8 = "c"; String s9 = s7 + s8; System.out.println(s==s9); //true String s10 = s; System.out.println(s==s10); //false String s11 = getPrefix() + "bc"; System.out.println(s==s11); //false String s12 = A + B; System.out.println(s==s12); //false String s13 = new String(new char[] { 'a', 'b', 'c', 'd' }); String s14 = s13.intern(); System.out.println(s13==s14); } private static final String getPrefix() { return "a"; } }