1. 数据类型转换
1.1 基本数据类型自动转换:
将取值范围小的数据类型转换成取值范围大的数据类型,与数据类型所占字节大小无关
byte --> short --> int --> long --> float --> double
char------^
public class BasicDemo1 {
public static void main (String[] args){
long l = 1234L;
int i =123;
short s = 12;
char c = 'a';
l = i;
i = l; //错误:不兼容的类型:从long转换到int可能会有损失
i = c;
s = c; //错误:不兼容的类型:从char转换到short可能会有损失
c = s; //错误:不兼容的类型:从short转换到char可能会有损失
}
}
1.2 基本数据类型强制转换:
格式:
取值范围较小的数据类型 变量名 = (取值范围较小的数据类型) 数据值
int a = (int) 3.14
1.3 数据类型转换的注意事项:
- 数据类型转换是七种数据类型的转换,与boolean数据类型无关
- 不推荐使用强制转换
- byte, short, char这三种数据类型只要参与运算,会将各自的数据类型自动提升成int再进行计算
1.4 常量:
在程序中其值不可以发生改变的量
常量的分类:
-
字面值常量
- 整数字面值常量 System.out.println(3);
- 小数字面值常量 System.out.println(3.14);
- 字符字面值常量
- 布尔字面值常量
- 字符串字面值常量
- 空字面值常量(null, 不可以使用输出语句直接打印)
-
自定义常量
字面值常量的注意事项:
- 在程序中,给byte,short,char声明初始化的时候,如果初始化值是字面值常量,且该数据值还在其取值范围内,在内存中的常量区自动将其优化给该数据类型,并非强制类型转换. 例如 byte b = 3; 这里并不是强制把int3转换成byte格式,而是常量区的优化结果.
- 在程序中,如果将数学运算的结果赋值给一个变量,运算符号两边的量都是字面值常量,且运算后的结果还在其数据类型的取值范围内,在运行(java)之前,在编译时会自动将其进行数学运算,将运算的结果赋值给左边的变量