The output of the below code is false
String str = "3456";
String str1 = "3456";
System.out.println(Integer.valueOf(str).equals(str1));
I didn't understand it. I thought it will return true
. As I am preparing for SCJP, understanding the reason behind it may be helpful.
Best Answer
An
Integer
will never beequal
to aString
.Both classes have very strict
equals()
definitions that only accept objects of their respective types.Integer.equals()
:String.equals()
:That's actually a quite common way to implement
equals()
: only objects of the same class (and occasionally subclasses) can be equal. Other implementations are possible, but are the exception.One common exception are the collections such as
List
: everyList
implementation that follows the convention will returntrue
when compared to any other implementation, if it has the same content in the same order.