Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

(s1==s5) Vs s1==s5

 
usha varadarajulu
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

public class EqualsTest{

public static void main(String[] args){
String s1 = "abc";
String s2 = s1;
String s5 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println("== comparison : " +(s1 == s5));
System.out.println("== comparison : " +(s1 == s2));
System.out.println("Using equals method : " +s1.equals(s2));
System.out.println("== comparison : " +s3 == s4);
System.out.println("Using equals method : " +s3.equals(s4));
}
}

//output
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true
Finished executing

public class EqualsTest{

public static void main(String[] args){
String s1 = "abc";
String s2 = s1;
String s5 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
//if we remove the brackets around "s1 == s5' it gives a different result.
System.out.println("== comparison : " +s1 == s5);
System.out.println("== comparison : " +(s1 == s2));
System.out.println("Using equals method : " +s1.equals(s2));
System.out.println("== comparison : " +s3 == s4);
System.out.println("Using equals method : " +s3.equals(s4));
}
}
//output
false
== comparison : true
Using equals method : true
false
Using equals method : true
Finished executing

in the above output why the s.o.p message is not printed and why it returns false?



Thanks
usha
 
Collins Mbianda
Ranch Hand
Posts: 259
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi!!!

The problem is not (s1==s5) Vs s1==s5.
It's a problem of Operator Precedence.

When you write:
System.out.println("== comparison : " +s3 == s4);

it's equivalent to:
System.out.println(("== comparison : " +s3) == s4);

First ("== comparison : " +s3) is evaluated. Then the result is compared to s4. And because the two are not equal using the "==" operation the result is false.

This is because the precedence + is higher.
Operator Precedence
[ August 18, 2007: Message edited by: Collins Mbianda ]
 
Raghavan Muthu
Ranch Hand
Posts: 3381
Mac MySQL Database Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello usha varadarajulu ,

Welcome to JavaRanch.

Hope you got the answer for your query by Collins Mbianda.

Have a pleasant stay here
 
usha varadarajulu
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Thanks a lot for your clear reply, i was able to make it out.


Bye
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic