Java编译器对所有变量,表达式,参数都要进行类型相容性的检查以保证类型的兼容。任何类型的不匹配都是错误的。
简单数据类型
整数:byte(1个字节),short(2个字节),int(4个字节),long(8个字节),都是有符号类型。
浮点类型:float(4个字节),double(8个字节)。
字符:char(2个字节),Java用Unicode字符集来 表示字符,在许多情况下可以当做整数来运算。
布尔型:boolean(JVM规范中没有明确指出大小)
自动类型转化条件
1.两种类型是兼容的
2.目标类型数据的范围比源类型数据大
数字类型(整数、浮点数)之间是兼容的;数字类型、字符类型和布尔型是不兼容的。
强制类型转化
兼容类型的缩小转化
代码实例:
//整数
int intType = 1234;
byte byteType = 123;
short shortType = 123;
long longType = 123;
//浮点数
double doubleType = 123.456;
float floatType = 123.23f;//必须要有f,小数默认为double型
//字符类型
char charType = 12;
//布尔类型
boolean boolType = true;
//自动类型转换
intType = byteType;
doubleType = intType;
floatType = byteType;
intType = charType;
//强制类型转化
intType = (int) longType;
byteType = (byte) charType;
//不兼容类型
boolType = intType;//报错,不兼容
boolType = charType;//报错,不兼容
类型自动提升
在表达式中,由于操作数范围不同,会出现类型自动提升的情况
代码实例:
//类型自动提升
intType = 1 + byteType;//1为整数型数据
byteType = (byte) (1 + byteType);
默认规则:提升为范围大的类型