JAVA学习笔记-类型提升的问题

//表达式中的类型提升问题

int a = 3;

long b = 4;

double d = 5.3;

int c =(int)(a+b); //做所有的二元运算符(+-*/%),都会有类型提升的问题!

float f = (float)(a+b);    //a为int,b为double,a+b会被提升为double类型,而赋值给f时,f为float类型,股需要强制转换!

容易出错的练习题:

一年挣10亿,20年挣多少钱?

int money = 1000000000;

int years =20;

long total = (long)money*years; //这里巧妙的运用了强制转型的类型提升,解决了超出int范围的问题

System.out.println(total);

一个人70年心跳多少次?

long times = 70L*60*24*365*70; //同上,不过强制转换为L,尽量放在第一个70后面,因为有些情况,若把L放在最后一个70后面,你不能够确定前面的数值相乘是否超出范围,前面相乘已经超出了范围,最后再强制转换类型提升之后,也是于事无补。

System.out.println(times);

posted @ 2016-11-05 18:05  iamAnonymous  阅读(148)  评论(0编辑  收藏  举报