黑马程序员技术交流社区
标题:
int 的问题
[打印本页]
作者:
laoyang
时间:
2011-11-21 11:51
标题:
int 的问题
本帖最后由 laoyang 于 2011-11-21 20:43 编辑
int num=2147483647;
System.out.println((num+2)+"");
输出了-2147483647,为什么溢出了却不抛异常?
作者:
gaowei
时间:
2011-11-21 11:59
因为打印输出时是以字符串的形势输出的(num+2)+""
因此不会抛出异常了。
作者:
肖岑锋
时间:
2011-11-21 13:08
Int类型溢出是不会报异常的,
计算机的是以二进制补码的形式存储数据的,举个小例子,129的原码是00000000 00000000 00000000 10000001 ,负数最高位取1,那么-129便是10000000 00000000 00000000 10000001 ,补码计算:减1为10000000 00000000 00000000 10000000 ,再取反为11111111 11111111 11111111 01111111现在把它储存为byte型,因为Byte型只有一个字节即8位,于是只能保留低8位,前面24位丢去,得到01111111,这就对应着十进制的127。
会不会有点复杂?说简单点吧。Int是4个字节32位的数据类型。如果Int型溢出的话,它会自动截取后32位,对应的数是多少就是多少。参照上例。
作者:
ZHB
时间:
2011-11-21 19:01
学习!!!!!!!!!!!!
作者:
ZHB
时间:
2011-11-21 19:01
学习!!!!!!!!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2