public class Scratch {
public static void main(String[] args) throws Exception {
long a, b, c;
a = Long.MAX_VALUE;
System.out.println("a=" + a);
b = a + 1;
System.out.println("b=" + b);
if (b
这段代码定义了一个名为 Scratch 的公共类,其中包含一个名为 main 的公共静态方法。该方法的参数是一个字符串数组 args ,并且声明了一个 Exception 异常。
在 main 方法中,首先定义了三个 long 类型的变量 a 、b 和 c 。然后将 a 的值设置为 Long.MAX_VALUE ,即 long 类型的最大值。接着将 b 的值设置为 a 加上 1 ,这里会发生溢出,因为 a 已经是 long 类型的最大值了,再加上 1 就会变成负数。然后通过一个 if 语句判断 b 是否小于 0 ,如果是,则将 c 的值设置为 -b ,否则将 c 的值设置为 b 。最后输出 a 、b 和 c 的值。
这段代码的主要目的是演示 long 类型的溢出情况,以及如何处理溢出。在这里,当 b 溢出时,会将其转换为正数并赋值给 c 。
运行此程序将输出以下内容:
a=9223372036854775807 b=-9223372036854775808 c=9223372036854775808
该程序利用 long 数据类型的最大值来测试溢出。由于 long 数据类型的范围是-9223372036854775808 到 9223372036854775807 ,所以当 a 等于 Long.MAX_VALUE 时,b 等于 a+1 将导致溢出并变为-9223372036854775808 。因为 b 是负数,所以在 if 语句中 c 被赋为-b ,否则 c 被赋为 b 。由于 c 等于 9223372036854775808 ,它超出了 long 数据类型的范围,但仍然可以被打印出来。