How does Java implement the below string comparisons
public class MyClass { public static void main(String args[]) { String a = "Chaipau"; String b = "pau"; System.out.println(a == "Chai"+"pau"); //true System.out.println(a == "Chai"+b); //false } } This is different from How do I compare strings in Java? , as the answer does not contain the why a new object is created in the second case , when it could have pointed to the same object reference as it is done in the first case.