在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 = 300L
System.out.println(c);
// 编译器会报错吗??为什么?
// 在java中,整数型字面量一上来编译器就会将它看做int类型
// 而2147483648已经超出int的范围,所以在没有赋值之前就出错了。
// 记住,不是e放不下2147483648,e是long类型,完全可以容纳2147483648
// 只不过2147483648本身已经超出了int范围。
// 错误:整数太大
//long e = 2147483648;
// 怎么解决这个问题呢?
long e = 2147483648L;
System.out.println(e);
}
}