JAVA的Integer类理解

深入理解JAVA——(3)

Integer类是基本数据类型int的包装类。

为什么要用包装类?
因为java的8大基本数据类型没有方法,所以要用对应的包装类丰富可使用的方法。

顺便回忆一下java的8大基本数据类型:
整型:byte, short, int, long
字符型:char
浮点型:float, double
布尔型:boolean

首先介绍构造方法:
官方文档
使用方法:

Integer a = new Integer(10);
Integer b = new Integer("10");

官方文档已经标记处这两个构造方法都不建议用。
实际使用中通过静态方法parseInt​(String s)或者valueOf​(int i)来创建对象,代码如下:

Integer c = Integer.parseInt("1000");
Integer d = Integer.valueOf("127");

会返回Integer对象
解释一下:
new Integer():方法会在内存中新开辟一个内存空间,创建一个新对象;
parseInt():方法会使用静态类IntegerCache中的cache里的对象。
valueOf():如果不需要新的Integer实例,则通常应优先使用此方法

System.out.println(new Integer("10")==new Integer("10")); 
// 打印:false
System.out.println(Integer.parseInt("100")==Integer.parseInt("100"));
// 打印:true
System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); 
//打印:true
//但是:
System.out.println(Integer.valueOf("128")==Integer.valueOf("128"));
//打印:false

附上官方文档:
在这里插入图片描述

总结:创建Integer对象用parseInt​()方法或者valueOf​()

还有Integer的valueOf​(String s)方法
在这里插入图片描述
此方法返回一个等于值的Integer对象:
底层是:

new Integer(Integer.parseInt(s))

为什么 System.out.println(Integer.valueOf(“128”)==Integer.valueOf(“128”));打印:false
因为:
valueOf()方法默认在-128~127之间时返回缓存中的已有对象

最后给大家出几道题,看看是否和你想的一样

1.System.out.println(127==127); //true , int type compare
2.System.out.println(128==128); //true , int type compare
3.System.out.println(new Integer(127) == new Integer(127)); //false, object compare
4.System.out.println(Integer.parseInt("128")==Integer.parseInt("128")); //true, int type compare
5.System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); //true ,object compare, because IntegerCache return a same object
6.System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); //false ,object compare, because number beyond the IntegerCache
7.System.out.println(Integer.parseInt("128")==Integer.valueOf("128")); //true , int type compare

如有不解或者内容指正,欢迎评论区留言!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值