基本数据类型对应的包装类,什么数据类型采用什么来修饰?
点跳
Java为基本数据类型提供了对应的类,这些类称作包装类。
数据的包装类可以提供该类最大、小值查阅和类型转化的功能
对应包装类比较特殊的就是int对应的Integer和char对应的Character;
对应包装类 | java常见数据类型 |
---|---|
Byle类 | byte类型的包装类 |
Short类 | short类型的包装类 |
Integer类 | int类型的包装类 |
Long类 | long类型的包装类 |
Float类 | float类型的包装类 |
Double类 | double类型的包装类 |
Character类 | char类型的包装类 |
Boolean类 | boolean类型的包装类 |
前6个由于是数,直接父类为Number,而后两个的直接父类就是Object类;
java类型的修饰符就要用与之对应的包装类来修饰
- 包装类中封装了一些很实用的方法和常量。
- 包装类在集合中用来定义集合元素的类型。
基本数据类型详情图
总结
java八种基本数据类型分为 四类 八种,
四类分别为整型、浮点型、布尔型、字符型;
八种分别为byte、short、int、long、float、double、boolean、char;
java八种基本数据类型的字节数:分别为1、2、4、8个字节;1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double);
默认类型:整数的默认类型为int,浮点数的默认类型为double;
八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母大写
关于值的范围问题,需要注意char类型是无符号的,不能为负,所以是0开始的;
类型转换关系特点
- 自动转换:低类型的向高类型的转换 转换图如下
- 强制转换:高类型的向底类型转换,但可能会数据溢出或者精度丢失
高等级转为低等级的时候,必须强制转换,但实际工作中不推荐使用强制转换,可能会失精度或数据溢出; - (2)特殊的:byte、short、char三种数据类型参与运算时,先一律转化为int类型;
以上现象在实际中可以出现这三种问题:
定义变量时 因为整形默认int类型 超出int取值范围 出现的类型转换问题
以上为几种正常的情况,但是有一种特殊的情况,就是int型直接量可以直接赋给byte、short、char类型变量,只要不超出变量类型的取值范围
数据运算时的类型转换
(1)运算时,运算结果会向较大的类型转换
(2)特殊的:byte、short、char三种数据类型参与运算时,先一律转化为int类型;
高等级转为低等级的时候,必须强制转换,
不是只有强制转换的时候会出现数据失精度或数据溢出;,例如下面这种情况
自动拆箱与装箱
自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)
包装类 | valueOf(X i)返回对象的原则 |
---|---|
Byte | 直接取,数组范围为(-128,127),且byte值的范围也是(-128,127) |
Short | (-128,127)之间在数组中取,否则new |
Integer | (-128,127)之间在数组中取,否则new |
Long | (-128,127)之间在数组中取,否则new |
Float | 直接new |
Double | 直接new |
Boolean | 直接返回,不new |
Character | 0-127之间从数组中取,否则new |
别踩坑
在c语言中,char类型占一个字节,而汉字占两个字节,所以不能存储。
在java语言中,char类型占两个字节,而java默认采用Unicode码是16位,所以一个Unicode码占两个字节,java中无论汉字还是英文都是用Unicode编码来表达的,所以可以存储一个汉字。