1 基本数据类型
2 数据类型占用的字节和取值范围
3 自动类型转换
4 强制类型转换
5 类型详解
1 整数类型
例如: byte b = 127;
byte 范围: -128 -127
short 范围L:-32768 - 32767
int 范围:-2147483648 - 2147483647
long
1️⃣ Java 中整数型字面量默认被当做 int 类型来处理,如果要表示 long 类型的整数.
2️⃣ 整数类型的值如果没有超过类型的最大值是可以存的,不会报错.
3️⃣ 两个 int 类型的数据做运算,最终的结果还是 int 类型
4️⃣ 在 Java 中,多种数据类型混合运算时,各自先转换成容量最大的类型,再做运算
2 浮点型
float
double
浮点型字面量默认被当做 double 类型,如果要当做 float 类型,需要在数字后面添加 F或 f 。
float f = 3.0; // 编译报错
报错原因是: 3.0 默认被当做 double 类型,大容量无法直接赋值给小容量。如何修改:
float f = 3.0F;
浮点型的两种表达形式
① 第一种形式:十进制
double x = 1.23;
double y = 0.23;
double z = .23;
② 第二种形式:科学计数法
double x = 0.123E2; // 0.123 * 10 的平方
double y = 123.34E-2; // 123.34 / 10 的平方
float占用4个字节,long占用8个字节,因为float的储存方式和long不同所以float容量比long的容量大
浮点型的取值是近似值,所以在比对中不要使用“ ==” 与其它数字进行“相等比较. 可以比较差值
double x = 6.9;
double y = 3.0;
double z = x / y;
if(z - 2.3 < 0.000001) //比较浮点型数据是否相等
3 boolean
① boolean 类型只有两个值: true 、 false 。没有其它值,没有 0 和 1 这一说。
4 char 字符型
① 占用两个字节, 0~65535 ,和 short 容量相同,但 char 可以取更大的整数
②单个字符,使用单引号括起来,不能是多个字符
③ 可以保存一个汉字
④ char c = ‘’; 这是不允许的
⑤ char c =‘\u0000’; 这表示一个空字符,也是 char 的默认值。 \u0000 是一个 Unicode 码。
⑥空字符与空格字符是不同的。空字符表示什么也没有。空格字符表示一个空格。char 参与的运算
① Java 中允许将一个整数赋值给 char 类型变量,但这个整数会被当做 ASCII 码值来处理
② 需要特别注意的是,这个码值有要求,不能超出 char 的取值范围
③ 只要没有超出 byte short char的取值范围,是可以直接赋值给 byte short char 类型变量的
④ System.out.println(‘a’ + 1); 97
⑤ char c = ‘a’ + 1; 结果是什么? b
⑥ byte short char 混合运算时,各自会先转换成 int 再做运算 !!!
基本数据类型转换规则
- 八种基本数据类型,除布尔型之外,其它类型都可以互相转换。
- 小容量转换为大容量,叫做自动类型转换,容量从小到大的排序为:
a. byte < short(char) < int < long < float < double b.
注意 char 比 short 可以表示更大的整数 (char是从0开始 short包含负数,他俩容量相同,都是2个字节)- 大容量转换为小容量,叫做强制类型转换,需要加强制类型转换符才能编译通过,运行时可能损失精 度,也可能不会损失。
- 整数字面量如果没有超出 byte short char 的取值范围,可以直接赋值给 byte short char 类型的变 量。
- byte short char 混合运算,各自先转换为 int 再做运算。
- 多种类型混合运算,各自先转换成容量最大的类型,再做运算。