Java中Integer.MAX_值的乘法

Java中Integer.MAX_值的乘法,java,Java,我只是在玩Java。编写了这个小程序: public class MaxValue{ public static void main(String[] args){ int i = Integer.MAX_VALUE; for(int j = 1; j<=10;j++){ System.out.println(i*j); } } } 公共类MaxValue{ 公共静态void main(字符串[]

我只是在玩Java。编写了这个小程序:

public class MaxValue{
    public static void main(String[] args){
        int i  =  Integer.MAX_VALUE;
        for(int j = 1; j<=10;j++){
            System.out.println(i*j);
        }
    }
}
公共类MaxValue{
公共静态void main(字符串[]args){
int i=整数的最大值;

对于(int j=1;j您正在经历的被称为
溢出
,使用原语类型java将以以下方式处理:-在达到
整数时,MAX_值将转到
整数。MIN_值
,这样您只会得到一个负值,它被称为溢出。因为您在t上操作最大可能值,任何数学递增运算都可能导致溢出


关于Java中溢出的更多信息:

我们需要分析结果的二进制内容:

Integer.MAX_VALUE*1=0x7fffffff,即十进制2147483647

Integer.MAX_值*2=0xfffffffe,即-2

Integer.MAX_VALUE*3=0x17ffffffd,但它是33位,截断后是0x7ffffffd,即2147483645


等等…

如果您感兴趣,请尝试
-1*Integer.MIN_VALUE
;)