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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张文豪 中级黑马   /  2013-9-16 17:07  /  1647 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张文豪 于 2013-9-16 18:09 编辑
  1. <p><p>class Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int i=1;
  6.   char b = 'b';
  7.   System.out.println(false?i:b);//输出98
  8. }
  9. }</p><p>---------------------------------</p><p> </p><p>
  10.   char b = 'b'; int i=1;
  11.   System.out.println(false?i:(char)b);//输出还是98</p><p>----------------------------------------
  12. int i=1;
  13.   char b = 'b';
  14.   System.out.println(false?(char)i:(char)b);//输出是b
复制代码
三元运算符的格式   [条件语句] ? [表达式1] : [表达式2]
它最后的返回值类型到底是由谁决定的呢??  求详细解答!!!!!!!!!!!!!!!

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

3 个回复

倒序浏览
是由表达式1和表达式2的类型决定的,两者的类型应该一样
回复 使用道具 举报
三元操作符类型的转换规则:

若两个操作数不可转换,则不做转换,返回值为Object类型。

若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。

若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型(可以参考“建议22”,会对该问题进行展开描述)。

若两个操作数都是直接量数字(Literal),则返回值类型为范围较大者。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
1098918523 发表于 2013-9-16 17:42
三元操作符类型的转换规则:

若两个操作数不可转换,则不做转换,返回值为Object类型。

嗯 感谢!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马