黑马程序员技术交流社区

标题: 有关三目运算符的输出问题~求大神指教~! [打印本页]

作者: 牛牛    时间: 2013-8-9 16:37
标题: 有关三目运算符的输出问题~求大神指教~!
本帖最后由 牛牛 于 2013-8-9 16:48 编辑

public static void main(String[] args) throws Exception {
                int i = 2;
                System.out.println(false? i:'E');//输出69
                System.out.println(false? 2:'E');//输出E
                System.out.println(true? i:'E');//输出2
                System.out.println(true? 2:'E');//输出
        }

为什么第二行输出69第三行输出E?
为什么第四行输出2第五行输出口 ?


作者: longlangcx    时间: 2013-8-9 16:46
这是哪里的题目?刚才刚有个兄弟问完...

三元运算符的冒号 左右两边的类型决定了表达式最终的值。

两边的值是一个char与一个0-65535之间的直接常量时,表达式的结果为char。所以第3行和第5行输出E和口。第5行输出的是'\u0002'对应的字符。
两边的值是一个char与一个int变量时,char会自动被提升为int,此时表达式结果为int。所以第2行和第4行输出69和2。69是'E'对应的ASCII值。
作者: 牛牛    时间: 2013-8-9 16:55
longlangcx 发表于 2013-8-9 16:46
这是哪里的题目?刚才刚有个兄弟问完...

三元运算符的冒号 左右两边的类型决定了表达式最终的值。

恩~谢谢大神明白了~ System.out.println(true? 65536:'E');//输出65536




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