Java之int与Integer区别
2016-05-05 21:25
621 查看
Java之int与Integer区别
int与Integer显然区别:1 Ingeter是int的包装类
2 实例化一个类时,其内部的int类型成员和Integer类型成员的初始值不同:int的初值为0,Ingeter的初值为null
int和Integer底层区别探索
A int和Integer(无论new与否)变量进行比较,都为true,这里的原因是Integer会自动拆箱成为int.
int i = 127; Integer j = 127; Integer k = new Integer(127); System.out.println(i == j);//true System.out.println(i == k);//true
B 两个new的变量进行比较,为false,原因是new的变量存在于堆上,所处的内存空间不一样.
Integer x = new Integer(127); Integer y = new Integer(127); System.out.println(x == y);//false
C Integer和new的两个变量进行比较,为false,原因是new的变量存在于堆上,Integer的变量存在于常量池中,所处的内存空间不一样.
Integer x = 127; Integer y = new Integer(127); System.out.println(x == y);//false
D 两个Integer的变量进行比较,看情况,如下
// Integer x = 127;//在编译的时候,右边翻译成Integer.valueOf(127); // Integer y = 127; // System.out.println(x == y);//true Integer x = 128; Integer y = 128; System.out.println(x == y);//false
JDK源码的valueOf函数式
assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i);
对于-128到127之间的数,会进行缓存;不属于这个范围,会重新开辟空间.
相关文章推荐
- Eclipse中项目Project Explorer视图与Package Explorer视图
- JAVA并发编程实战---第三章:对象的共享(2)
- java的多态
- Java进阶学习第十一天——cookie&session入门
- Java 学习笔记
- spring.xml命名空间
- java中静态属性和和静态方法的继承问题 以及多态的实质
- myeclipse10.7上搭建spring mvc+hibernate开发框架(spring3+hibernate3.3),并完成登录验证功能
- java的线程
- Spring的反射工具类 ReflectionUtils
- JAVA——集合类
- Getting Spring Error “Bean named 'x' must be of type [y], but was actually of type [$Proxy]” in Jenk
- Spring AOP 之 实现切点、切面
- java classloader机制
- java junit测试
- Spring AOP 深入分析
- IDEA+Maven+Spring+SpringMVC+SpringJDBC整合Demo
- 八大排序算法 之 基数排序(桶排序)
- java的异常处理
- Quartz使用-入门使用(java定时任务实现)