Java 基础数据类型及其包装类

01 Java 基础数据类型及其包装类

基本数据类型

Java 基本数据按类型可以分为四大类:布尔型1、整数型4、浮点型2、字符型1,这四大类包含 8 种基本数据类型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aGtfjY4Y-1603943092350)(https://s1.ax1x.com/2020/10/27/Bl1Xkj.png)]

BM28ht.png

思考:如何查看类型的取值范围?

单精度和双精度

  • 什么是浮点型?
    浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
  • 什么是单精度,什么是双精度
    0olndP.png
  • 单精度浮点数和双精度浮点数有以下区别:

1、所占的内存不同

单精度浮点数回占用4个字节(答32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。

而双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数,包括符号位1位,阶码11位,尾数52位。

2、所存的数值范围不同

单精度浮点数的数值范围为-3.4E38~3.4E38,而双精度浮点数可以表示的数字的绝对值范围大约是:-2.23E308 ~ 1.79E308。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。

3、十进制下的位数不同

单精度浮点数最多有7位十进制有效数字,如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。

双精度浮点数可以表示十进制的15或16位有效数字,超出的部分也会自动四舍五入。

  • 为什么不能用浮点型表示金额?
    金额用BigDecimal !!!
    float的精度是23位,double精度是63位。在存储或运算过程中,当超出精度时,超出部分会被截掉,由此就会造成误差。

包装类

特点:

  • 功能丰富:包装类包含了有 hashCode 等方法;
  • 可定义泛型类型参数:例如 List list = new ArrayList<>(); ;
  • 序列化:包装类实现了 Serializable 接口,所以包装类天然支持序列化和反序列化;
  • 类型转换:包装类提供了方便的类型转换方法,比如 Integer 的 parseInt() 方法;
  • 高频区域数据缓存:高频区域可使用已有的缓存对象。

自动拆装箱

思考:基本数据类型的好处是什么?

在Java语言中,new一个对象是存储在堆里的,我们通过栈中的引用来使用这些对象;所以,对象本身来说是比较消耗资源的。如果对于经常使用的类型频繁是有New关键字会显得很浪费。

Java提供的基本数据类型,变量不需要使用new创建,他们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。

什么是拆箱与装箱?

这个问题的本质是需要对基本数据类型和包装类之间要做转化才诞生的。

  • 把基本数据类型转换成包装类的过程就是打包装,为装箱。
  • 把包装类转换成基本数据类型的过程就是拆包装,为拆箱。
什么是自动拆装箱?

为了减少开发人员的工作,Java提供了自动拆箱与自动装箱功能。
自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。

Integer a = 10;  //自动装箱
int b = a;     //自动拆箱
拆装箱的原理

int的自动装箱都是通过Integer.valueOf()方法来实现的,Integer的自动拆箱都是通过integer.intValue来实现的

哪些类型会用到

1、将基本数据类型放入集合类
2、包装类型和基本类型的大小比较
3、包装类型的运算
4、三目运算符的使用
5、函数参数与返回值

缓存

低版本的JDK 可以在高版本上进行运行,无论JDK升级到那个版本

对字节码来说 int 是最小单位

堆是被共享的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值