When I concat 2 strings with (+) operator using double quotes and compare with other string literal with same value it result as true .. but when I concat 2 string variables and compare gives false ? why this happens ? 
As per my knowledge when we concat strings with (+) operator JVM returns new StringBuilder(string...).toString() which creates a new String instance in heap memory and one reference in String pool . if that is true how is it returning true in one scenario and false in other?
1st scenario :
    String string1 = "wel";
    String string2 = "come";
    string1 = string1 + string2; //welcome
    String string3 = "welcome";
    System.out.println(string3 == string1); // this returns false but have same hashcode
2nd scenario :
    String string4 = "wel" + "come";
    String string5 = "wel" + "come";
    System.out.println(string4 == string5); // this returns true
Can someone help me on this ?
 
     
    