数据类型
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:byte(1字节),short,int,long,loat,double,char(2字节),boolean(没有明确规定)
(1)整形和浮点型都是带有符号的
(2)整型默认为int型,浮点型默认为double
变量
(1),整型变量
1. int不论在何种系统下都是4个字节
2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出
4. 变量在使用之前必须要赋初值,否则编译报错
5. int的包装类型为 Integer
(2)长整型变量
1. 长整型变量的初始值后加L或者l,推荐加L
2. 长整型不论在那个系统下都占8个字节
3. long的包装类型为Long
(3)短整型变量
1. short在任何系统下都占2个字节
2. short的表示范围为:-32768 ~ 32767
3. short的包装类型为Short
(4)字节型变量
1. byte在任何系统下都占1个字节
2. byte的范围是:-128 ~ 127
3. 字节的包装类型为Byte
(5)浮点型变量
1. double在任何系统下都占8个字节
2. 浮点数与整数在内存中的存储方式不同,不能单纯使用2^n 的形式来计算
3. double的包装类型为Double
4. float的包装类型为Float
(6)字符型变量
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此 一个字符占用两个字节, 表示的字符种类更多, 包括中文.
3. char的包装类型为Character
(7)布尔型变量
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
3. boolean的包装类型为Boolean。
强制类型转换
分为自动类型转换(隐 式) 和 强制类型转换(显式):
自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数 据范围大的时会自动进行。
int a = 1;
long b = 1L;
b = a; a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。
int a = 10;
long b = 100L;
a = (int)b;
类型提升
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c)//报错
结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误
总结:
1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.