您的位置:首页 > 编程语言 > Java开发

JAVA数据类型溢出分析

2014-02-07 14:53 197 查看
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进制的补码进行计算的,细节就不具体列出了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: