码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-11-05 20:41:05      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:习题   long   赋值   运算符   强制转换   money   java学习   system   sys   

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

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);

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

标签:习题   long   赋值   运算符   强制转换   money   java学习   system   sys   

原文地址:http://www.cnblogs.com/iamAnonymous/p/6033650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!