关于int类型以及equals比较的问题

   先来看下面的一段程序:

	Object value1=0;
        Integer value2=0;
        Long value3=new Long(0);
	System.out.println(value1.equals(value2));
	System.out.println(value1.equals(value3));
 

各位在看我下面的答案之前可以先自己判断一下输出的是什么,测试后输出的是:

true
false

 为什么是这样的输出,这里面有两点内容:

1、Object value1=0;这样写的话,默认value1的类型就是Integer类型的,各位可以这样输出一下:

System.out.println(value1.getClass());

 输出会是:

class java.lang.Integer

 2、我们都知道equals比较的是两个对象的内容是否相同,但是要明确一点,这两个对象的类型是要相同的。

 

根据上面两点的分析,就不难得出上面的输出结果了。

 

不过对于这个还有一个问题,我没想明白,对于:

Object value1=0;

 如果没做特殊的说明,会默认value1是Integer类型的,也就是说value1的取值不能超过Integer的最大值,在MyEclipse中直接书写,超过Integer的最大取值编译是通不过的,会报out of range错误:


 

但是我这样书写:

Object value1=Integer.MAX_VALUE+200;

  这样写为什么可以,而且有输出:

   -2147483449

对于这点不是很明白,哪位指导一下。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值