先来看下面的一段程序:
1、object value1=0;这样写的话,默认value1的类型就是integer类型的,各位可以这样输出一下:
根据上面两点的分析,就不难得出上面的输出结果了。
不过对于这个还有一个问题,我没想明白,对于:
<br><img src="http://dl.iteye.com/upload/attachment/528754/4d5a06d7-f24a-32a5-91d1-6de1e2f93ad2.jpg" alt="">
但是我这样书写:
-2147483449
对于这点不是很明白,哪位指导一下。
<div>
object value1=0; integer value2=0; long value3=new long(0); system.out.println(value1.equals(value2)); system.out.println(value1.equals(value3));
各位在看我下面的答案之前可以先自己判断一下输出的是什么,测试后输出的是:
truefalse
为什么是这样的输出,这里面有两点内容:
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错误:
<br><img src="http://dl.iteye.com/upload/attachment/528754/4d5a06d7-f24a-32a5-91d1-6de1e2f93ad2.jpg" alt="">
但是我这样书写:
object value1=integer.max_value+200;
这样写为什么可以,而且有输出:
-2147483449
对于这点不是很明白,哪位指导一下。
<div>