java integer(1)_Java面试题(1):详解int与Integer

本文探讨了Java中基本类型int和其包装类Integer的区别,包括内存存储、默认值、比较以及自动装箱和拆箱。特别强调了在-128到127之间的Integer值会缓存,导致特定条件下的比较结果。
摘要由CSDN通过智能技术生成

Java面试题(1):详解int与Integer

int与Integer的区别

int是Java的基本数据类型之一,Integer是int的包装类

int直接再内存中储存值,Integer进行new操作,实际是生成了一个对象

int的默认值为0,Integer的默认值为null

Integer必须实例化(赋值)后才可以使用,而int无需实例化

int与Integer的比较

Integer i = new Integer(200);生成方式简称为new Integer

Integer i = 200;生成方式简称为Integer

int与int比较,数字一样为true

int与Integer,int与new Integer比较,数值一样结果均为true

// int与Integer,new Integer比较

// int与Integer比较,Integer会自动拆箱为int

int i1 = 200;

//相当于Integer i2 = Integer.valueOf(200); //自动装箱

Integer i2 = 200;

Integer i3 = new Integer(200);

//自动拆箱后和i1进行比较

System.out.println(i1 == i2);//true

System.out.println(i1 == i3);//true

new Integer与new Integer比较,数字一样结果均为false

//生成的对象在堆中是不同的对象,所以数值相同也为false

Integer i1 = new Integer(200);

Integer i2 = new Integer(200);

System.out.println(i1 == 12);//false

非new生成的Integer之间比较分两种情况:

-128 <= i <= 127,非new生成的Integer之间比较数字相同时,结果为true

Integer i1 = -128;

Integer i2 = -128;

System.out.println(i1 == i2);//true

i 不在这个区间内,非new生成的Integer之间比较数字相同时,结果为false

Integer i1 = -129;

Integer i2 = -129;

System.out.println(i1 == i2);//false

new Integer与非new Integer比较,数值一样结果均为false

非new Integer在-128~127中,会通过valueOf指向常量池中

非new Integer不在-128~127中,相当于new Integer,是一个对象

new Integer会指向堆中,均为对象,地址不同,所以均为false

Integer i1 = 100;

Integer i2 = new Integer(100);

System.out.println(i1 ==i2);//false

知识点扫盲

自动装箱与自动拆箱

自动拆箱:把包装类类型转换为基本类型

自动装箱:把基本类型转换为包装类类型

-128-127的特殊性

i >= -128 并且 i <= 127 的时候,代码中的 if 条件成立,Integer i1 = 100,将 i 的值放入缓存中,Integer i2 = 100直接取缓存里面的数据,而不是重新创建一个Ingeter 对象,所以两个Integer i = 100相比为true;

public static Integer valueOf(int i) {

if (i >= IntegerCache.low && i <= IntegerCache.high)

return IntegerCache.cache[i + (-IntegerCache.low)];

return new Integer(i);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值