跳过导航,朗读正文21CN首页

新闻 | 财经 | 汽车 | 房产 | 体育 | 娱乐 | 数码 | 生活 | 女人 | 游戏 | 旅游 | 社区 | 邮件 | VGO | 播客 | 影院

  当前位置:21CN首页 > IT频道 > 软件频道 > 正文  
 
Java高级:深入浅析Java 类型提升约定
2007-12-26 10:15:05  赛迪网  【 浏览字号:
精彩回顾 手机 | 数码 | 笔记本 | 家电 | 下载
·30秒清除电脑垃圾 使电脑急速如飞 ·最新版QQ2008下载 搞笑FlASH下载
·篮球宝贝的性感家居照 暗访:交楼问题大曝光 ·买家电 到3C特惠场 汽车维修市场黑幕揭秘
·诺基亚N96真机欣赏 不买魅族M8十大充足理由 ·颁奖典礼有奖拿有表演 迎奥运 运动型车导购
搜索更多 Java 的资讯 >>>

    类型提升的约定

 除了将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类型. 

(编辑:充姬娅)
相关新闻: Java 搜索其他
- Sun炮轰iPhone不支持Java 乔布斯回应  2007-09-27 18:26:45
- Sun高层炮轰iPhone不支持Java 乔布斯回应  2007-09-27 17:09:22
- Java EE6提案两大主题:拓展性和概要  2007-07-08 10:11:04
- 让编程更简单 SUN送出圣诞礼 Java 6  2006-12-14 11:05:18
- Sun“基於Java SOA服务”全国巡回跑  2006-05-24 16:39:00
21CNIT最终页推荐
今日热点
手机 数码 家电 软件下载
意想不到的概念笔记本 点兵热门酷睿双核电脑 三大芯片巨头围攻英特尔
下一篇:WinRAR小技巧:直接压缩数据到U盘
热门电影排行
夺帅
3K时代
极速飚风
瞬间激情 | 火车与玫瑰 | 马樱丹 | 超时空战士
| 黑帮太保 | 外星帝国 | 天国车站 | 明明
 点播更多    

热门剧集排行
夜郎王
廖家
给我一片蓝天
心不再遥远 | 东方母亲 | 广州教父
天使在线 | 鸦片战争演义 | 天下有情之甜蜜蜜
 点播更多    
 
 
公司简介  |  广告服务  |  网站导航  |  合作伙伴  |  诚征代理  |  联系我们