在java中有一条非常重要的结论,必须记住:

在任何情况下,整数型的“字面量”默认被当做int类型处理。(记住就行)
如果希望该“整数型字面量”被当作long类型来处理,需要在“字面量”后面添加L/l
建议使用大写L,因为小写l和1傻傻分不清。

  1. public class IntTest02{
  2. public static void main(String[] args){
  3. // 分析这个代码存在类型转换吗,以下代码什么意思?
  4. // 不存在类型转换
  5. // 100 这个字面量被当做int类型处理
  6. // a变量是int类型,所以不存在类型转换。
  7. // int类型的字面量赋值给int类型的变量。
  8. int a = 100;
  9. System.out.println(a);
  10. // 分析这个程序是否存在类型转换?
  11. // 分析:200这个字面量默认被当做int类型来处理
  12. // b变量是long类型,int类型占用4个字节,longg类型占8个字节
  13. // 小容量可以自动转换成大容量,这种操作被称为:自动类型转换。
  14. long b = 200;
  15. System.out.println(b);
  16. // 分析这个是否存在类型转换?
  17. // 这个不存在类型转换。
  18. // 在整数型字面量300后面添加一个L之后,300L联合起来就是一个long类型的字面量
  19. // c变量是long类型,long类型赋值给long类型不存在类型转换。
  20. long c = 300L
  21. System.out.println(c);
  22. // 编译器会报错吗??为什么?
  23. // 在java中,整数型字面量一上来编译器就会将它看做int类型
  24. // 而2147483648已经超出int的范围,所以在没有赋值之前就出错了。
  25. // 记住,不是e放不下2147483648,e是long类型,完全可以容纳2147483648
  26. // 只不过2147483648本身已经超出了int范围。
  27. // 错误:整数太大
  28. //long e = 2147483648;
  29. // 怎么解决这个问题呢?
  30. long e = 2147483648L;
  31. System.out.println(e);
  32. }
  33. }