java int == integer_java中int与Integer使用区别详解

fff6c98081bf8904098fb5e1bd59ff4b.gif

一、Integer是int的包装类型,是引用类型,int是值类型。衍生出来的特点就是:

1、Integer比较时比较地址,int比较时比较值,Integer与int比较又如何呢?留个疑问,下面再论。

2、以对象的属性存在时,Integer初始默认值为null,int为0;在方法作用域内,变量是要手动进行初始化滴,若只声明,在后面使用的时候编译器是通不过的。

二、出于数据转换的考虑:

Integer提供了两种方法,parseInt和valueOf,看下面:

String s = "1"

int a = Integer.parseInt(s)

Integer b = Integer.valueOf(s)

Integer c = Integer.valueOf(1)

1、parseInt接收String类型的入参,返回int

2、valueOf接收String和int类型的入参,返回Integer

当然,你这样写也是成立的:int d = Integer.valueOf(s),编译器进行了隐式拆箱,将Integer转化为了int。

三、比较:

1、int与Integer

int a = 1;

Integer b = 1;

a==b为true,b先进性拆箱,与a比较的是值

2、Integer与Integer

Integer a = new Integer(1)

Integer b = 1

Integer c = 1

a==b? false

原因:a存在于内存堆中,b存在于常量池中,地址不同。任何new都会产生新的对象;Integer b = 1进行了隐式的装箱(调用了valueOf方法)

b==c? true

原因:在内存中,会有一块叫做常量池的区域,专门存放b和c这种形式定义的对象,初始化时会先去常量池中寻找1,若已经存在,直接指向1,若不存在,生成对象1放入常量池。

看下这个:

Integer d = 128

Integer e = 128

d==e?false

为什么这个不适合上面的常量池说法了呢?原因在于常量池指定了数值范围:-128~127。

超过了这个范围,就会生成新的对象。

3、比较两个Integer的值

Integer a = new Integer(1)

Integer b = new Integer(2)

可以这样:a.intValue() == b.intValue() 或者 a.equals(b)

四、获取最大值和最小值如此简单:

int a = Integer.MAX_VALUE; 2^31-1

int b = Integer.MIN_VALUE; -2^31

五、使用场景的限制:

1、很多方法参数就只接收对象类型

2、泛型只支持对象类型

3、考虑到数据库设计中某些数值列可以为null,持久话对象中使用引用类型,可接收null值

fff6c98081bf8904098fb5e1bd59ff4b.gif

转载请注明来源网站:www.itxm.cn谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值