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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 冯海霞 于 2012-10-5 12:11 编辑

问题1,比如说system.out.println(0x3c),
输出的就是十进制数据60,为啥不是十六进制的0x3c呢

问题2,就是关于三元运算
char x='X';
int i=0;
System.out.println(true?x:0);
结果为什么是“X”呢,
为什么不是因为0是int型而自动提升成int型输出的是X代表的数值呢

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
因为你的true?X:0语句执行顺序是这样的:1.当你前面为true时,他只扫描到X,而后面不管是什么,他也不看。
                                                         2.而且你这个和int类型提升没有一点关系,因为你的true?X:0语句相当于if(true){
                                                            System.out.println(x);
                                                                            }
                                                                else
                                                                           {
                                                                                       System.out.println(0);
                                                                             }

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
public void print(int i)
打印整数。按照平台的默认字节编码将 String.valueOf(int) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。另请参见:
Integer.toString(int)
这是中文API的解释,所以说这是默认字节编码和String的方法的关系。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报

public void print(int i)
打印整数。按照平台的默认字节编码将 String.valueOf(int) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。另请参见:
Integer.toString(int)
这是中文API的解释,所以说这是默认字节编码和String的方法的关系。
落下了一个::public static String valueOf(int i)
返回 int 参数的字符串表示形式。
该表示形式恰好是单参数的 Integer.toString 方法返回的结果。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
胡斌 发表于 2012-10-5 11:20
因为你的true?X:0语句执行顺序是这样的:1.当你前面为true时,他只扫描到X,而后面不管是什么,他也不看。
...

昂。。。恍然大悟了。。。。。。。
我觉得一个视频看两边的结果就是脑子里浮现各种各样的问题
回复 使用道具 举报
回复:
问题1:  因为 System.out.println(0x3c)  其实是 0x3c自动装箱了之后 去默认调用Integer 类的toString()方法,

问题2:  char x='X';int i=0;System.out.println(true?x:0);结果为什么是“X”呢,   同理吧 默认去调用Character
类的 toString()方法

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
胡斌 中级黑马 2012-10-5 13:13:10
7#
冯海霞 发表于 2012-10-5 11:52
昂。。。恍然大悟了。。。。。。。
我觉得一个视频看两边的结果就是脑子里浮现各种各样的问题 ...

呵呵,慢慢就好了。
回复 使用道具 举报
问题1:你问的的问题的回答是肯定的,java输出的数据默认是十进制
问题2:你如果将程序改成
int x='X';
int i=0;
System.out.println(true?x:0);

应该可以得到你想要的结果

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

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