当前位置:编程学习 > JAVA >>

今天碰到了一个很非常基础的问题,变量赋值问题,但是不知道还有这种,是怎么回事呢?

int a =  10;
int b = 101;
int c = 0101;
System.out.println(a);
System.out.println(b);
System.out.println(c);


为什么输出结果是
10
101
65

前面两个都没有问题,但是第三个前面突然加了一个0为了试一试是不是自动去掉0了,但是结果是怎么样的,我不认为是jdk的问题,我真不知道是为什么,请大神门帮解答 --------------------编程问答-------------------- c是八进制,0开头的 --------------------编程问答-------------------- 不是的,我刚试了,c = 0101 转16进制是正确的,但是改成其他数字比如c = 01234;
输出的值是668 但是1234转十六进制是4d2 八进制是2322所以不是的,现在我也不理解到底为什么?? --------------------编程问答-------------------- 8进制1234转10进制就是668啊 --------------------编程问答-------------------- 你现在的值是个8进制,你把他换成10进制输出 --------------------编程问答-------------------- 看懂了,是前前面加0是八进制转换成了10进制就是668,就是不是有人说0xxx的数字会自动将0去掉吗? --------------------编程问答--------------------
引用 1 楼 fudongrifdr 的回复:
c是八进制,0开头的

谢谢你,发哥就是帅 --------------------编程问答-------------------- 八进制0开头 0x是16进制 --------------------编程问答-------------------- java里面,0开头就是八进制了,0x是十六进制
顺带说下,在js里面,有个paserInt方法,parseInt(12)就是12,而parseInt(012)就是八进制了。除非用两个参数,制定进制数。如parseInt(012,10)就是十进制了。 --------------------编程问答--------------------
引用 5 楼 baiyunpeng42 的回复:
看懂了,是前前面加0是八进制转换成了10进制就是668,就是不是有人说0xxx的数字会自动将0去掉吗?

是自动去掉的,但是第一个0具有特别的意义,所以不会去掉。
你试试看,00000000101,打印结果依然是65.意思就是讲第二个开始的0去掉了 --------------------编程问答-------------------- 赞个,很基础很重要的 --------------------编程问答-------------------- 除
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,