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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangxin540 中级黑马   /  2013-8-13 00:59  /  1217 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yangxin540 于 2013-8-14 01:09 编辑

int a = 1<5?'1':100;
System.out.println(a);--------打印出来的值为49,这个地方不理解,这个值是怎么来的。

System.out.println(1<5?'1':100);--------打印出来的值为1,这种好像是把其当做String来处理了吧。

评分

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

查看全部评分

6 个回复

倒序浏览
1<5?'1':100;-------结果为char类型的'1'把它赋值给int类型,会先向上自动转型,对照ASCII码为49.
输出的时候其实是把int类型自动装箱为Integer类型,然后调用Interger.toString(49);方法转为字符串输出的。
如果直接System.out.println(1<5?'1':100);
相当于System.out.println('1');
相当于System.out.println(Character.toString('1'));
所以打印了个1.
回复 使用道具 举报
本帖最后由 べPNヤ 于 2013-8-13 01:14 编辑

int a = 1<5?'1':100;  '1'  要与左边的 a  属于同一类型 所以把 char 类型 ‘1’ 转换成了 int 类型的值 对应的是 unicode码的数值 49      直接打印就是直接把他当字符串给输出了
回复 使用道具 举报
三元运算的特点是两个结果的类型要相互兼容,char类型与int类型可以兼容,也就是char类型自动提升为int类型,所以你打印出来的是int类型,而不是char类型
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
回复 使用道具 举报

恩,好的,明白
回复 使用道具 举报
杨璐敏 发表于 2013-8-13 22:28
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

恩,好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马