Kar*_*hik 5 java size byte overflow
可能重复:
为什么Java Number数据类型没有溢出?
在Java中,当继续增加Byte值并且超过大小容量时,为什么不抛出任何运行时异常?例如:
public static void main(String[] args) {
byte b = 127;
++b;
System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将打印出来-128.如果抛出它会不会更好RuntimeException?为什么这样设计?
对于其他原始类型也是如此Integer:
int c = 2147483647;
++c;
System.out.println(c);
Run Code Online (Sandbox Code Playgroud)
上面的代码打印出来-2147483648.
整数溢出实际上在计算中非常有用.如果它抛出异常,许多聪明的算法会突然破坏或变得不切实际.例如,涉及定点算术的任何事情都会突然受到例外的困扰.
问题是,溢出通常不是问题,因为我们对程序设置限制以防止它发生(如果它会导致问题).其他时候,我们设计程序来专门利用它.
不要认为溢出是"超过其最大尺寸的值".这在技术上是不可能的.这些位简单地环绕并保持在该数据类型的限制范围内.
如果需要检查溢出并希望生成异常,可以执行以下操作:
byte b = 127;
byte oldb = b;
b++;
if( b < oldb ) {
// Calamity!!! Raise an exception!
}
Run Code Online (Sandbox Code Playgroud)
不要害怕你的整数限制.学会理解并与他们合作.
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |