在java中有一条非常重要的结论,必须记住:
  在任何情况下,整数型的“字面量”默认被当做int类型处理。(记住就行)
  如果希望该“整数型字面量”被当作long类型来处理,需要在“字面量”后面添加L/l
  建议使用大写L,因为小写l和1傻傻分不清。
public class IntTest02{public static void main(String[] args){// 分析这个代码存在类型转换吗,以下代码什么意思?// 不存在类型转换// 100 这个字面量被当做int类型处理// a变量是int类型,所以不存在类型转换。// int类型的字面量赋值给int类型的变量。int a = 100;System.out.println(a);// 分析这个程序是否存在类型转换?// 分析:200这个字面量默认被当做int类型来处理// b变量是long类型,int类型占用4个字节,longg类型占8个字节// 小容量可以自动转换成大容量,这种操作被称为:自动类型转换。long b = 200;System.out.println(b);// 分析这个是否存在类型转换?// 这个不存在类型转换。// 在整数型字面量300后面添加一个L之后,300L联合起来就是一个long类型的字面量// c变量是long类型,long类型赋值给long类型不存在类型转换。long c = 300LSystem.out.println(c);// 编译器会报错吗??为什么?// 在java中,整数型字面量一上来编译器就会将它看做int类型// 而2147483648已经超出int的范围,所以在没有赋值之前就出错了。// 记住,不是e放不下2147483648,e是long类型,完全可以容纳2147483648// 只不过2147483648本身已经超出了int范围。// 错误:整数太大//long e = 2147483648;// 怎么解决这个问题呢?long e = 2147483648L;System.out.println(e);}}
