1、小容量可以直接赋值给大容量,称为自动类型转换。

2、大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。

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