Why does this java string comparison prints false? -
this question has answer here:
- how compare strings in java? 23 answers
 
i beginning learn java,so please pardon if question seems silly, going through online examples.
i found string question, should not output true ?
as comparing 2 strings equal.
public class helloworld{       public static void main(string []args)      {       string morning2 = new string("morning");       system.out.println("morning" == morning2);      } }   similarly program, should not print true
public class helloworld{       public static void main(string []args)      {         string str1 = new string("paul");         string str2 = new string("paul");         system.out.println(str1 == str2);      } }   but program, prints true.
public class helloworld{       public static void main(string []args)      {         string str3 = "harry";         string str4 = "harry";         system.out.println(str3 == str4);      } }   can explain why there difference in output ?
i have seen question , answer how compare strings in java? not fit explanation.
the reason why 1st program
public class helloworld{       public static void main(string []args)      {       string morning2 = new string("morning");       system.out.println("morning" == morning2);      } }   prints false because in these lines
string morning2 = new string("morning"); system.out.println("morning" == morning2);   you creating different object(by new keyword) , comparing string, eventhough strings same, you here comparing 2 different objects.
thats how java allocates strings in string pool.
similary second program.
but 3rd program, happening is, when execute line
string str3 = "harry";
the string object harry allocated in string pool, when execute next line,
string str4 = "harry";
java searches if string objects available in string pool, since available not create new string object, , references object itself.
so true in 3rd program.
hope have cleared query.
Comments
Post a Comment