本帖最后由 李涛兴 于 2012-11-18 11:30 编辑
- class IntegerDemo
- {
- public static void main(String[] args)
- {
- Integer m=128;
- Integer n=128;
- Integer a=127;
- Integer b=127;
- System.out.println("m==n: "+(m==n));
- System.out.println("a==b: "+(a==b));
- }
-
- }
- 运行结果
- m==n: false
- a==b: true
复制代码 在1.5版本的JDK中运行结果有这种差别,是因为定义的数值没有超过byte的数值范围内,而使a,b指向同一个对象。
请问为什么没有超过byte这个数值,就会指向同一个对象呢?是因为byte的数值范围是-128~127这个数值之间,byte就可以代替使用int类型赋值吗? |