Java表达式的值及数据类型

表达式分别为:
System.out.println(1+4/5+(int)5.2/2.5);
System.out.println(1+4/5+(int)(5.2/2.5));
System.out.println(1+4/5+5.2/2.5);
System.out.println(1.0+4/5+5.2/2.5);
System.out.println(1+4/5.0+5.2/2.5);
值分别为:
3.0
3
3.08
3.08
3.88
数据类型也可以从值中看出来,但是不清楚为什么是这样的?能否有高手解释下为什么出这样的值并且是这样的数据类型?多谢!

System.out.println(1+4/5+(int)5.2/2.5);
4/5为整数除法,结果为0。(int)5.2/2.5是先将5.2转换为整型得5,再除以2.5,得2.0(注意结果为浮点数),所以最后结果是浮点数,3.0

System.out.println(1+4/5+(int)(5.2/2.5));
由于5.2/2.5加了括号,所以是先做浮点除法,再转换为整型,最后结果也是整型,得3

System.out.println(1+4/5+5.2/2.5);
1+0+2.08=3.08,没什么好说的

System.out.println(1.0+4/5+5.2/2.5);
1.0是浮点数,4/5先按整数除法来,在转换为浮点数(得0.0),5.2/2.5=2.08,结果是浮点数3.08

System.out.println(1+4/5.0+5.2/2.5);
由于4/5.0中的除数是浮点数,所以这一步按浮点数除法来计算,得0.8,结果为3.88
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-01
以下两点可以告诉你为什么会这样:
1、在java中,如果乘“*”和除“/”的两端都是整数,那么它会将结果的小数部分去掉,所以"4/5"的结果是0,而"4/5.0"的结果是"0.8",而加“+”和减“-”则不影响。
2、第一个表达式(1+4/5+(int)5.2/2.5)中,只是把"5.2"转换为了整数"5",而"2.5"是小数,所以结果中有一位小数。
第2个回答  2020-12-23

相似回答