1、小容量可以直接赋值给大容量,称为自动类型转换。
2、大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。
但需要注意的是:强制类型转换符之后,虽然编译通过了,但是运行的时候可能会损失精度。
public class IntTest03{
punlic static void main(String[] args){
// 不存在类型转换
// 100L是long类型字面量,x是long类型字面量。
long x = 100L;
// x是long类型,占用8个字节,而y变量是int类型,占用4个字节
// 在java语言中,大容量可以"直接"赋值给小容量吗?不允许,没有这种语法。
// 编译错误信息:错误信息:不兼容的类型:从long转换到int可能会有损失
//int y = x;
// 大容量转换成小容量,想要编译通过,必须加强制类型转换符,进行强制类型转换。
// 底层是怎么进行强制类型转换的呢?
// long类型100L:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
// 以上的long类型100L强转为int类型,会自动将"前面"的4个字节砍掉:00000000 00000000 00000000 01100100
int y = (int)x; // 这个(int)就是强制类型转换符,加上去就能编译通过。
// 但是要记住:编译虽然过了,但是运行时可能损失精度。
// 定义变量a int类型,赋值100
int a = 100;
System.out.println(a);
int b = a; // 将变量a中保存的值100复制一份给b变量。
System.out.println(b);
}
}