java基本数据类型各占多少字节,int和Integer区别

基本数据类型

类型字节数取值范围
byte1 27 − 2 7 271 2 7 − 1
short2 215 − 2 1 5 2151 2 1 5 − 1
int4 231 − 2 3 1 2311 2 3 1 − 1
long8 263 − 2 6 3 2631 2 6 3 − 1
char2\u0000~\uFFFF
float4小数
double8范围更大,精度更高
boolean1前七位是0

注意:而然,在实际的开发过程中,Double.valueOf(String) 和Float.valueOf(String)会丢失精度。如果我们需要精确计算的结果,则必须使用BigDecimal类来操作!一般项目中都会写一个BigDecimal的工具类,可自行百度。

基本数据和包装类

原因:

  1. java是面向对象语言,基本数据类型并不是一个具体的类,用包装类可以更好的提现万物基于对象这一理念。
  2. 集合中的泛型需要基类是Object类型,所以必须有个对象的包装类才能使用

区别:

  1. 包装类属于引用数据类型,所以它们之间的区别就是基本数据类型和引用数据类型的区别。反应到内存中,基本数据类型的值是存放在栈里面,而包装类的栈存放的是值得地址,值存放在堆内存中。
  2. 初始值不同,eg: int的初始值为 0 、 boolean的初始值为false 而包装类型的初始值为null

注意:
在java中,Integer,Short,Byte,Character,Long有缓存机制。浮点型没有该机制,大小范围除Character为0-127外其余均为-128–127.
具体举例为:

Integer a1 = 1;
        Integer a2 = 1;

        Integer b1 = 200;
        Integer b2 = 200;

        Integer c1 = Integer.valueOf(1);
//        Integer c2 = new Integer(1);      官方不推荐这种建对象的方法喔
        Integer c2 = Integer.valueOf(1);

        Integer d1 = Integer.valueOf(200);
        Integer d2 = Integer.valueOf(200);


        System.out.println("a1==a2?" + (a1 == a2));//true
        System.out.println("b1==b2?" + (b1 == b2));//false
        System.out.println("c1==c2?" + (c1 == c2));//false
        System.out.println("d1==d2?" + (d1 == d2));//false

可以看到,不同的创建方式也有是否用缓存的区别,大家可以细细体会。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值