黑马程序员技术交流社区

标题: 关于java输出数据,是默认的输出十进制吗 [打印本页]

作者: 打工人    时间: 2012-10-5 11:03
标题: 关于java输出数据,是默认的输出十进制吗
本帖最后由 冯海霞 于 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代表的数值呢
作者: 胡斌    时间: 2012-10-5 11:20
因为你的true?X:0语句执行顺序是这样的:1.当你前面为true时,他只扫描到X,而后面不管是什么,他也不看。
                                                         2.而且你这个和int类型提升没有一点关系,因为你的true?X:0语句相当于if(true){
                                                            System.out.println(x);
                                                                            }
                                                                else
                                                                           {
                                                                                       System.out.println(0);
                                                                             }

作者: 陈琦    时间: 2012-10-5 11:40
public void print(int i)
打印整数。按照平台的默认字节编码将 String.valueOf(int) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。另请参见:
Integer.toString(int)
这是中文API的解释,所以说这是默认字节编码和String的方法的关系。
作者: 陈琦    时间: 2012-10-5 11:42

public void print(int i)
打印整数。按照平台的默认字节编码将 String.valueOf(int) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。另请参见:
Integer.toString(int)
这是中文API的解释,所以说这是默认字节编码和String的方法的关系。
落下了一个::public static String valueOf(int i)
返回 int 参数的字符串表示形式。
该表示形式恰好是单参数的 Integer.toString 方法返回的结果。
作者: 打工人    时间: 2012-10-5 11:52
胡斌 发表于 2012-10-5 11:20
因为你的true?X:0语句执行顺序是这样的:1.当你前面为true时,他只扫描到X,而后面不管是什么,他也不看。
...

昂。。。恍然大悟了。。。。。。。
我觉得一个视频看两边的结果就是脑子里浮现各种各样的问题
作者: 黑马-王燚    时间: 2012-10-5 13:05
回复:
问题1:  因为 System.out.println(0x3c)  其实是 0x3c自动装箱了之后 去默认调用Integer 类的toString()方法,

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


作者: 胡斌    时间: 2012-10-5 13:13
冯海霞 发表于 2012-10-5 11:52
昂。。。恍然大悟了。。。。。。。
我觉得一个视频看两边的结果就是脑子里浮现各种各样的问题 ...

呵呵,慢慢就好了。
作者: cehkongfu    时间: 2012-10-5 16:09
问题1:你问的的问题的回答是肯定的,java输出的数据默认是十进制
问题2:你如果将程序改成
int x='X';
int i=0;
System.out.println(true?x:0);

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




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