黑马程序员技术交流社区

标题: 一个输出打印问题 [打印本页]

作者: 向阳泪无痕    时间: 2013-10-14 18:47
标题: 一个输出打印问题
大家帮看下,下面这是什么问题
public static void main(String args[]){
       long num = 08;
       System.out.println(num);
}
这个输出是为什么说数据过大.....
如果把  num = 0123 为什么输出的结果不是 0123 而是其它值   
我知道的是  0 放在最前面让其变成了负数  但这个结果是怎么出来的呢?为什么会这样呢

作者: 潘才新    时间: 2013-10-14 19:02
顶一个。
作者: Joney__    时间: 2013-10-14 20:29
你这个定义变量时候就已经出现错误了,不能这样定义,要定义8就直接8前面不能加零    你要是想打负数前面直接加  -  就行。0代表符号这个是2进制里面的,你可以去看家进制转换,还有要注意的是定义变量的时候不要超过类型的范围,超过范围编译时就会报错,  long 类型的范围是 -12^63~2^63-1   ^表示多少次方
作者: loading……99.9    时间: 2013-10-14 20:32
0 放在最前面不是让其变成了负数,而是让其变成一个八进制数,八进制数里只用0-7,long num = 08;所以你这句话赋值会出错,不相信你可以是把0123这个数由八进制转换成十进制,看看输出的是不是对应的十进制数。
作者: 王飚    时间: 2013-10-14 21:58
  1. class Test
  2. {
  3.         public static void main(String args[]){
  4.        long num =8;//这里楼主如果相给num赋8的值的话直接这样写就好
  5.            /*以0开头的int类型数字如08默认是二进制,会超出范围*/
  6.        System.out.println(num);
  7. }
  8. }
复制代码

作者: 向阳泪无痕    时间: 2013-10-15 10:09
这个问题  解决后 怎么改成 已解决状态  新手不懂  谢谢
作者: zhou5852    时间: 2013-10-15 15:46
额 你的理解有问题,java程序中的数字是分进制的,有二进制,八进制,十进制和十六进制之分,咱们平常使用的是十进制,但是在编写java程序的时候可能很多时候要使用十六进制或者八进制
有下面你需要记住(一个程序员最起码得知道计算机中的进制转换)
一个数字前面带了0那么这个表示他按八进制数字,八进制数字中每位数字最大为7可以为7,但是不能为8
十六进制是前面呆着0x  或者0X,而1.7版本又增加了二进制,前面以0b 开头。
你需要补一点知识就是  计算机中的进制转换,我也不知道毕老师的课程里讲了没,可能讲的也少,
这个网上找个视频看下 半小时全通了。
你的这些问题,我们以前也遇到过。。。




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