Java 为什么2147483647+1成功运行而2147483648给出错误

Java 为什么2147483647+1成功运行而2147483648给出错误,java,integer,Java,Integer,为什么MAXAGEN和maxAgain1有区别 注: 整数的最大值:2147483647 整数的最小值:-2147483648 这里再次成功运行maxagin1,maxagin1给出错误。因为整数溢出。当它溢出时,下一个值是Integer.MIN_值。每当将1添加到最大的java整数(其位号为0)时,其位号变为1,数字变为负数 简而言之,当你越过国际日期线时,日期改变的原因是一样的:那里有一个不连续性。这是二元加法的本质 资料来源: 因为整数溢出了。当它溢出时,下一个值是Integer.MIN

为什么MAXAGEN和maxAgain1有区别

注:

整数的最大值:2147483647 整数的最小值:-2147483648
这里再次成功运行maxagin1,maxagin1给出错误。

因为整数溢出。当它溢出时,下一个值是Integer.MIN_值。每当将1添加到最大的java整数(其位号为0)时,其位号变为1,数字变为负数

简而言之,当你越过国际日期线时,日期改变的原因是一样的:那里有一个不连续性。这是二元加法的本质

资料来源:


因为整数溢出了。当它溢出时,下一个值是Integer.MIN_值。每当将1添加到最大的java整数(其位号为0)时,其位号变为1,数字变为负数

简而言之,当你越过国际日期线时,日期改变的原因是一样的:那里有一个不连续性。这是二元加法的本质

资料来源:


整数能够存储介于-2147483648到2147483647之间的任何数字,因为它被指定为32位存储

您可以改为使用long类型,它可以存储-9223372036854775808
到223372036854775807和64位。

整数能够存储-2147483648到2147483647之间的任何数字,因为它被指定为32位存储

您可以改为使用long类型,它可以存储-9223372036854775808
到223372036854775807和64位。

您的第一行溢出,结果是-2147483648,如图所示。这一点在本节中进行了解释

数学加法器 要在运行时收到发生此类溢出的通知,请使用静态方法。如果加法导致整数溢出,将引发一个异常,即算术异常

尝试 { int result=Math.addExact 2_147_483_647,1; System.out.println结果; } 捕获算术异常 { System.out.println e; }
查看该代码。

您的第一行溢出,结果为-2147483648,如图所示。这一点在本节中进行了解释

数学加法器 要在运行时收到发生此类溢出的通知,请使用静态方法。如果加法导致整数溢出,将引发一个异常,即算术异常

尝试 { int result=Math.addExact 2_147_483_647,1; System.out.println结果; } 捕获算术异常 { System.out.println e; }
查看该代码。

第一个有效,因为它溢出并生成下一个值,在本例中为-2147483648,但第二个不允许,因为您无法为不在允许范围内的int赋值。第一个有效,因为它溢出并生成下一个值,在本例中为-2147483648,但不允许使用第二个值,因为无法为int赋值,而int不在允许的范围内。
int maxAgain = 2147483647+1;
System.out.println(maxAgain);
int maxAgain1 =  2147483648
System.out.println(maxAgain1);