Java基本类型常见错误_溢出_L问题
public class TestTypeConvertError{
public static void main(String[] args)
{
int money = 1000000000;//10亿
int years = 20;
int total = money*years;//返回的total是负数,total超过了int的范围约-20亿-20亿,这里的total是200亿,total溢出了
System.out.println("total="+total);
long total1 = money*years;//total1默认是int值,因此结果会转成int值,再转成long,但是已经发生了数据丢失,这就是数据丢失
System.out.println("total1="+total1);
long total2 = money*((long)years);//正确的是先将一个因子变成long,整个表达式发生提升,全部用long来计算
System.out.println("total2="+total2);
}
}
运行结果为: