Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么程序在出现溢出或下溢时不引发异常_Java_Exception_Exception Handling_Integer Overflow - Fatal编程技术网

Java 为什么程序在出现溢出或下溢时不引发异常

Java 为什么程序在出现溢出或下溢时不引发异常,java,exception,exception-handling,integer-overflow,Java,Exception,Exception Handling,Integer Overflow,当超过整数的最大值时,将为其指定最小值。 Ex-System.out.printlinteger.MAX_值+1;输出:-2147483648 在这里,程序不会抛出异常,而是返回不正确的值。 这个特性如何帮助程序员或设计师 它使代码运行更快,因为不需要在每次算术运算后检查溢出。我不认为java的原始实现者需要检查计算是否导致溢出的开销。您可以通过编程进行检查。比如说, 这是传统C和C++如何处理整数的,所以有一个先例。p> 这不是一个不正确的值,它是绝对正确的-Java中的整数是一个有符号的32

当超过整数的最大值时,将为其指定最小值。 Ex-System.out.printlinteger.MAX_值+1;输出:-2147483648 在这里,程序不会抛出异常,而是返回不正确的值。
这个特性如何帮助程序员或设计师

它使代码运行更快,因为不需要在每次算术运算后检查溢出。

我不认为java的原始实现者需要检查计算是否导致溢出的开销。您可以通过编程进行检查。比如说,


这是传统C和C++如何处理整数的,所以有一个先例。p> 这不是一个不正确的值,它是绝对正确的-Java中的整数是一个有符号的32位数字-向其最大值添加1会使其返回到其最小值。。这就是你所拥有的。。。绝对正确的数据类型观点@MarkKeen。但是,当开发人员为一个计算编写代码时,比如:int x=3*100000000,那么他不希望为变量x赋值为负值。这就是为什么从开发者的角度来看,我认为这是一个错误的价值观。我在计算数字的3%时遇到了这个问题。我错误地认为java会通过异常或错误,但永远不会计算错误的结果。因此,这只是一个关于溢出如何工作的观点:抛出异常,而不是产生意外结果?这是一个无法回答的问题-这就是它的工作原理,您已经知道了这一点,您只需要相应地工作,即编码检查/测试/正确的变量赋值int,long等。。。我不能说有一种编程语言能完全满足每个人的需求和期望。。。