数据类型
数据类型包括基本数据类型和引用数据类型。基本数据类型为以上八个基本数据类型。引用数据类型包括类,接口和数组。
数据类型在做参数的时候。基本数据类型转递的是值的复制,并不会影响主函数中的基本类型变量。引用数据类型传递的是引用的复制,会影响主函数中的引用类型变量。
基本数据类型
四个整型
默认值 0
byte 字节型 8位,主要用来处理二进制流;
short 短整型 16位
int 整型 32位 Java中整数的默认数据类型是int
long 长整型 64位
2个浮点型
默认值 0.0
float 单精度 32位
double 双精度 64位 double是浮点数的默认类型
1个字符
默认值 null;
char 16位 Java中使用 ’ ’ 表示字符 用 ” “ 表示字符串
布尔值
默认值是false
boolean 1位
只能赋值true 和 false Java不可以使用1和0来表示真和假,布尔值不可以转成数字。
一般用作判断语句的条件。
类型提升
byte+short的变量在运算的过程中会自动的提升为int类型
long g1 = 4654564564L; 要加大写L或小写l说明是long类型,应为默认是int没有说明会报错
byte+short+int+long = long
类型转换
-
数据类型转换规则
数据类型转换规则:从小到大自动转,从大到小强制转。
从byte到double可以自动转化,虽然char和short都是16位,但是之间需要强制 转换,byte和char之间也需要强制转换。
- 低精度向高精度转换
低精度向高精度是可以自由转换的,把小的放进大的里,一定可以放进去。
- 高精度向低精度转换
高精度向低精度转换需要强制转换,可能会造成精度丢失,比如,byte b; long l=5;i=l;进行强制转换后数值正确,但是 byte b; long l=150;i=l;输出i=44;l=150超过了byte的最大长度,这就造成了精度丢失。
封装类
封装类是对应了八个基本数据类型封装而形成的类。
基本数据类型 | 封装类 | 基本数据类型缺省值 | 封装类缺省值 |
---|---|---|---|
byte | Byte | 0 | null |
short | Short | 0 | null |
int | Integer | 0 | null |
long | Long | 0 | null |
float | Float | 0.0 | null |
double | Double | 0.0 | null |
char | Character | ‘’ | null |
boolean | Boolean | false | null |
基本数据类型和封装类的比较
- 存储:基本数据类型是直接将值存储在栈中,包装类是将对象放在堆中,然后通过堆中的引用来调用对象。
- 声明:包装类需要new在堆内存中进行new来分配内存空间 。
- 缺省值:封装类的缺省值为null’
- 使用方式:基本数据类型直接使用;封装类多在集合中使用,可以使用基本数据类型不能使用的方法如ValueOf(),toString()等
number类
数字封装类有 Byte,Short,Integer,Long,Float,Double 这些类都是抽象类Number的子类。
拆箱和装箱
装箱定义: 将基本数据类型转成封装类型的过程。
int i = 5;
//基本类型转换成封装类型
Integer it = new Integer(i);
拆箱定义: 将封装类转成基本数据类型的过程。
Integer it = new Integer(i);
//封装类型转换成基本类型
int i2 = it.intValue();
自动装箱:
int i = 5;
//基本类型转换成封装类型
Integer it = new Integer(i);
//自动转换就叫装箱
Integer it2 = i;
自动拆箱:
int i = 5;
Integer it = new Integer(i);
//封装类型转换成基本类型
int i2 = it.intValue();
//自动转换就叫自动拆箱
int i3 = it;
如果在 表达式 中出现了封装类和基本数据类型,则封装类会自动拆箱转成基本数据类型参与运算。