A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付星 黑马帝   /  2011-12-31 16:49  /  1849 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

char x = 'X';
int i = 0;
System.out.println(true ? x : 0);//X
System.out.println(false ? i : x);//8,为什么

3 个回复

倒序浏览
杨旭 黑马帝 2011-12-31 17:02:28
沙发
三元运算符
具有强转动作
将char类型的变量强转成int型 打印出 char类型  在Unicode 编码表中的编号
大写A 为65 小写a 为97  
推算出X在编码中的编号为 88
回复 使用道具 举报
三元运算符中的 : 运算时会强制转换,类型与:前边那个 类型要一致。System.out.println(true ? x : 0) 这个x是char型 0 就转换为char;而System.out.println(false ? i : x)中i是int 所以x的char转换为int 就是88了。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
当不同数据类型的数据参加运算的时候,会涉及到不同的数据类型的转换问题:

  Java语言数据类型的转换基本上按照下面的规则进行:

  如果其中一个运算对象是double类型的,另一个也会被转换成double类型。

  否则,如果其中一个运算对象是float类型的,另一个也会被转换成float类型的。

  否则,如果其中一个运算对象是long类型的,另一个也会被转换成long类型的。

  否则,如果其中一个运算对象是int类型的,另一个也会被转换成int类型的。

  否则,如果其中一个运算对象是short类型的,另一个也会被转换成short类型的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马