比较对象和长整型



当我想比较两个变量时(一种类型对象,一个类型长),我发现不能将对象转换为长度,例如:

Object obj = 100;
Long l_num = 100L;
System.out.println(obj.equals((Object)l_num));    // print false
System.out.println(((Long)obj) == l_num);         // throw java.lang.ClassCastException Exception

然后我只能将两者与(obj.toString()).equals(l_num.toString())进行比较,它返回true。

但是,当我将整数与对象进行比较时,结果是不同的:
Object obj = 100;
Integer i_num = 100;
System.out.println(((Integer)obj) == i_num); // return true System.out.println(obj.equals(i_num)); // return true System.out.println((obj.toString()).equals(i_num.toString())); // return true

有人友善地告诉我为什么两个结果有所不同,并且有什么方法可以更好地比较对象?

如果您认为这是一个有意义的问题,请让我们谈谈。谢谢。

LongInteger是不同的类型。您比较了不同类型的对象。

100是int。因此将其装箱到Integer。因此可以比较obj和i_num。

它的前进 -

Object obj = 100;

此100是一个整数,Object obj保留该整数参考,您可以通过打印class java.lang.IntegerSystem.out.println(obj.getClass());确保。这是自动拳击的一个例子 -

System.out.println(((Long)obj) == l_num);

(Long)ObjClassCastException抛出,因为它试图将Integer对象施加到无效的Long对象。

写入表格是 -

System.out.println(((Long)((Integer)obj).longValue()) == l_num); // it return true 

相关内容

  • 没有找到相关文章

最新更新