请看下面的代码
class TestToString
{
public static void main(String args[])
{
CheckToString cs = new CheckToString (2);
CheckToString c = new CheckToString (2);
if( cs.equals(c))
System.out.println(" Both objects are equal");
else
System.out.println(" Unequal objects ");
}
}
class CheckToString
{
int i;
CheckToString ()
{
i=10;
}
CheckToString (int a)
{
this.i=a;
}
}
输出: 不等的物体
但我期待输出将是
两个对象相等
我知道这两个对象都有不同的引用,
System.out.println(cs); //com.sample.personal.checkToString@19821f
System.out.println(c); //com.sample.personal.checkToString@addbf1
但我在问,为什么他们有不同的参考?而在以下情况下,对象具有相同的内存位置。
Integer a = new Integer(2);
Integer b = new Integer(2);
System.out.println(a); //2
System.out.println(b); //2
我正在将用户定义类的对象与预定义类的对象进行比较。似乎用户定义类的对象与具有超过 -128 到 127 的值的整数类对象的行为相同。为什么这两种情况的引用不同?(对于值在 -128 到 127 之间的整数类相同,对于用户定义的类不同)