package p20140207;
public class T20140207 {
public static void main(String[] args)
{
int test =Integer.MAX_VALUE;
System.out.println("No.1= "+test);
System.out.println("No.2= "+(test+1));
System.out.println("No.3= "+(test+1l));
}
}
大家猜猜结果会是什么样?
结果如下:No.1= 2147483647
No.2= -2147483648
No.3= 2147483648
package p20140207;
public class T20140207 {
public static void main(String[] args)
{
int test =java.lang.Integer.MAX_VALUE;
System.out.println("No.1= "+test);
System.out.println("No.2= "+(test+1));
System.out.println("No.3= "+(test+1l));
System.out.println("No.4= "+(Math.pow(2, 32)));//int 一共可以表示2的32次方=4294967296个数字
System.out.println("No.5= "+(Math.pow(2, 32)/2-1));//最大表示的数量
}
//0~2147483647分别表示0~2147483647
//2147483648~4294967295分别表示-2147483648~-1
//所以当2147483647+1变成了第2147483648个数时就对应变成了-2147483648
}
PS:运算的时候都是用2进制的补码进行计算的,细节就不具体列出了。