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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 牛牛 于 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第五行输出口 ?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
这是哪里的题目?刚才刚有个兄弟问完...

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

两边的值是一个char与一个0-65535之间的直接常量时,表达式的结果为char。所以第3行和第5行输出E和口。第5行输出的是'\u0002'对应的字符。
两边的值是一个char与一个int变量时,char会自动被提升为int,此时表达式结果为int。所以第2行和第4行输出69和2。69是'E'对应的ASCII值。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
longlangcx 发表于 2013-8-9 16:46
这是哪里的题目?刚才刚有个兄弟问完...

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

恩~谢谢大神明白了~ System.out.println(true? 65536:'E');//输出65536
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马