Java Integer对象的比较及自动装箱和自动拆箱过程
2021/8/26 22:06:17
本文主要是介绍Java Integer对象的比较及自动装箱和自动拆箱过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、首先介绍一下自动装箱和自动拆箱过程, 自动装箱,就是把基本数据类型用他们对应的引用类型包装起来,使他们可以具有对象的特质。例如我们可以把int类型包装成Integer类型的,把double类型的包装成Double类型的。 自动拆箱,就是进行与自动装箱相反的操作。 自动装箱的过程:当需要一种类型的对象时,这种基本数据类型就自动封装到与它对应的包装类中。 自动拆箱的过程:当需要一个数值时,被装箱的对象中的值就会被自动提取出来,没有必要再去调用intValue()和doubleValue()等方法。 2、在JAVA中,"=="比较的是对象的引用,而不是值(value) 3、运行下面的代码:
Integer val11 = 100; Integer val12 = 100; Integer val21 = 127; Integer val22 = 127; Integer val31 = 1000; Integer val32 = 1000; System.out.println(val11 == val12); System.out.println(val21 == val22); System.out.println(val31 == val32); System.out.println(val31.intValue() == val32.intValue()); System.out.println(val11 == 100); System.out.println(val31 == 1000);
结果是: true true false true true true 分析上面的结果 : 1和2返回true, 虽然比较的是对象的引用,但是自动装箱时,java在编译的时候Integer a=100,被编译成Integer a=Integer.valueOf(100)。因此,关键就在于valueOf()这个方法。 // IntegerCache.low = -128 // IntegerCache.low = -127 public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 通过valueOf()到的Integer对象,如果取值范围在-128到127之间,就会返回 IntegerCache 缓存的Integer对象,超过这个范围,就new一个对象返回。每new一个对象,都会在堆中为这个对象分配地址。 3是返回false, 因为其取值范围不在-128到127之间,比较的对象地址。 4是调用intValue()方法返回其value值,所以是true 5和6是因为进行了自动拆箱,比较的是基本数据类型,因此"=="比较的是其数值,结果数true。
这篇关于Java Integer对象的比较及自动装箱和自动拆箱过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南