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-28MQ底层原理资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:入门与初级用户指南
- 2024-11-28MQ消息队列资料入门教程
- 2024-11-28MQ消息队列资料:新手入门详解
- 2024-11-28MQ消息中间件资料详解与应用教程
- 2024-11-28MQ消息中间件资料入门教程
- 2024-11-28MQ源码资料详解与入门教程
- 2024-11-28MQ源码资料入门教程
- 2024-11-28RocketMQ底层原理资料详解