基本数据类型对应的包装类,什么数据类型采用什么来修饰?

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类型的修饰符就要用与之对应的包装类来修饰

  1. 包装类中封装了一些很实用的方法和常量。
  2. 包装类在集合中用来定义集合元素的类型。

基本数据类型详情图

基本数据类型对应的包装类,什么数据类型采用什么来修饰?

总结

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开始的;

类型转换关系特点

  1. 自动转换:低类型的向高类型的转换 转换图如下
    基本数据类型对应的包装类,什么数据类型采用什么来修饰?
  2. 强制转换:高类型的向底类型转换,但可能会数据溢出或者精度丢失
    高等级转为低等级的时候,必须强制转换,但实际工作中不推荐使用强制转换,可能会失精度或数据溢出;
  3. (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编码来表达的,所以可以存储一个汉字。