黑马程序员技术交流社区
标题:
关于三元运算符 返回值类型的问题
[打印本页]
作者:
张文豪
时间:
2013-9-16 17:07
标题:
关于三元运算符 返回值类型的问题
本帖最后由 张文豪 于 2013-9-16 18:09 编辑
<p><p>class Demo
{
public static void main(String[] args)
{
int i=1;
char b = 'b';
System.out.println(false?i:b);//输出98
}
}</p><p>---------------------------------</p><p> </p><p>
char b = 'b'; int i=1;
System.out.println(false?i:(char)b);//输出还是98</p><p>----------------------------------------
int i=1;
char b = 'b';
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