黑马程序员技术交流社区
标题:
一个输出打印问题
[打印本页]
作者:
向阳泪无痕
时间:
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
class Test
{
public static void main(String args[]){
long num =8;//这里楼主如果相给num赋8的值的话直接这样写就好
/*以0开头的int类型数字如08默认是二进制,会超出范围*/
System.out.println(num);
}
}
复制代码
作者:
向阳泪无痕
时间:
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