注册
 找回密码
 注册
江西广告网
查看: 263|回复: 0
打印 上一主题 下一主题

java

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-30 11:14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
类型提升的约定 除了将byt型和short型提升到int型以外,java定义了若干适用于表达式的类型提升规则(type promotion rules). 首先,如刚才描述的,所有的byte型和short型的值被提升到int型.其次,如果一个操作数是long型,整个表达式将被提升到long型;如果一个操作数是float型,整个表达式将被提升到float型;如果有一个操作数是double型,计算结果就是double型. 下面的程序表明:在表达式中的每个值是如何被提升以匹配各自二进制运算符的第二个参数: class Promote { public static void main(String[] args) { byte b = 42; char c = 'a'; short s = 1024; int i = 50000; float f = 5.67f; double d = .1234; double result = (f * b) (i / c) - (d * s); System.out.println((f * b) " " (i / c) " - " (d * s)); System.out.println("result =" result); } } 进一步看看发生在下列程序行的类型提升: double result = (f * b) (i / c) - (d * s); 在第一个表达式f*b中,变量b被提升为float类型,该子表达式的结果当然是float类型. 接下来,在子表达式i/c中,边量c被提升为int类型,该子表达式的结果当然是int类型. 然后,子表达式d*s中的变量s被提升为double类型,该子表达式的结果当然是double类型. 最后,考虑三个中间值,float类型,int类型,和double类型.float类型加int类型的结果是 float类型,然后float类型减去提升为double类型的double类型,该表达式的最后结果是 double类型.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表