黑马程序员技术交流社区

标题: 关于三元运算符 返回值类型的问题 [打印本页]

作者: 张文豪    时间: 2013-9-16 17:07
标题: 关于三元运算符 返回值类型的问题
本帖最后由 张文豪 于 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]
它最后的返回值类型到底是由谁决定的呢??  求详细解答!!!!!!!!!!!!!!!


作者: 麦子609    时间: 2013-9-16 17:16
是由表达式1和表达式2的类型决定的,两者的类型应该一样
作者: 1098918523    时间: 2013-9-16 17:42
三元操作符类型的转换规则:

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

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

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

若两个操作数都是直接量数字(Literal),则返回值类型为范围较大者。
作者: 张文豪    时间: 2013-9-16 18:07
1098918523 发表于 2013-9-16 17:42
三元操作符类型的转换规则:

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

嗯 感谢!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2