I am facing a problem with this line (commented below):
System.out.println("Using == ::"+s3==s4)
which outputs false
.
However, System.out.println(s3==s4)
outputs true
.
Now, I am not able to understand why I am getting this result:
public class string {
public static void main(String[] args){
String s3="Shantanu";
String s4=s3;
String s1=new String("java");
String s2=new String("javaDeveloper");
System.out.println("Using Equals Method::"+s1.equals(s2));
System.out.println("Using Equals Method::"+s3.equals(s4));
System.out.println("Using == ::"+s3==s4);//Problem is here in this line
System.out.println(s1+"Directly printing the s2 value which is autocasted from superclass to string subclass ");
System.out.println("Directly printing the s1 value which is autocasted from superclass to string subclass "+s2);
System.out.println(s3);
}
}
Output-Using Equals Method::false Using Equals Method::true Using == ::false java Directly printing the s2 value which is autocasted from superclass to string subclass Directly printing the s1 value which is autocasted from superclass to string subclass javaDeveloper
You're missing a set of brackets:
System.out.println("Using == ::" + (s3==s4));
In your version, "Using == ::" + s3
is being compared via ==
to s4
, which isn't what you want.
In general, +
has a higher precedence than ==
, which is why "Using == ::" + s3==s4
is being evaluated as ("Using == ::" + s3) == s4
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With