java数据包装类_Java 基础数据类型及其包装类

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

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

基本数据类型

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

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

638accd327eacc016ffa20b515c25d34.png

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

单精度和双精度

什么是浮点型?

浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。

什么是单精度,什么是双精度

2dd259352e1981b6b59885e7514aeca3.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 是最小单位

堆是被共享的

Java 基础数据类型及其包装类相关教程

java去掉返回对象中为NULL的属性

java去掉返回对象中为NULL的属性 java去掉返回对象中为NULL的属性 1.和第三方系统进行交互时,如果返回的是对象model转成的json,那么json中会存在 “xxxx”:null 。 2.使用postMan调试程序时,发现返回对象的属性如果为NULL时,结果很难看。效果如下: 2.如

vue使用全局混入的方式实现数据字典的快速获取

vue使用全局混入的方式实现数据字典的快速获取 在开发管理系统类的项目数据字典是一个非常常用的功能,比如产品类型,业务组织,邮递类型这种比较简单的数据,有可能更改,但是大多数情况下又不会更改,用一个数据字典来维护这些数据就非常方便。下面介绍一种

【刷题1】LeetCode 152. 乘积最大子数组 java题解

【刷题1】LeetCode 152. 乘积最大子数组 java题解 “你解题的样子真帅!!! 我在边上看着好菜!!

JavaScript中的call(),apply(),伪数组转化为数组

JavaScript中的call(),apply(),伪数组转化为数组 1.一种是正常模式,第二种是严格模式,现在一般都采用正常模式 正常模式: function f1(){ console.log(this); } f1(); // window window.f1();//window 严格模式: use strict; function f1(){ console.log(t

C语言数据结构之离散事件模拟的实现代码(银行排队事件)

C语言数据结构之离散事件模拟的实现代码(银行排队事件) 结果: IDE:Visual Studio 2019 声明:为了方便书写代码,用到了C++的引用调用特性和iostream作为输入输出,读者可以使用指针调用和scanf_s/print语句实现相同效果 tips:有疑问可以在下面交流,我会

达梦数据库无效的语句句柄

达梦数据库无效的语句句柄 今天查看tomcat历史运行记录有一个error错误,详细信息如图: 根据此错误查看多处配置文件: jdbc.properties 配置均正常 考虑到关于数据库句柄的参数值限制找到手册: DM系统管理员手册 如图: 达梦句柄参数设置 MAX_SESSION_STATE

sqlldr工具导入oracle数据

sqlldr工具导入oracle数据 sqlldr工具导入oracle数据 外层脚本 demo.sh sqlldr userid=属主/密码(注意特殊字符转义)@数据库名称 control=demo.ctl log=demo.log errors=99999 核心配置 demo.ctl load data CHARACTERSET ZHS16GBKinfile demo.txt into table

一个不需要添加依赖依赖的Java代码实现发送emil,文字超链接

一个不需要添加依赖依赖的Java代码实现发送emil,文字超链接 直接使用在JDK的自带邮件包,我使用的是1.8版本的 import javax.mail.Message; @RequestMapping(/emil) public boolean emile(){ Properties properties = new Properties(); properties.put(mail.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值