java基本数据类型范围和溢出取值问题

java基本数据类型范围

byte:-27 ~ 27-1,即-128 ~ 127。1字节

short:-215 ~ 215-1,即-32768 ~ 32767。2字节

有符号int:-231 ~ 231-1,即-2147483648 ~ 2147483647。4字节

无符号int:0~232-1。

long:-263 ~ 263-1,即-9223372036854775808 ~ 9223372036854775807。8字节

溢出取值问题

以byte类型为例,当byte b=(byte)128; 时,byte会默认从byte类型的最小值-128开始计算
其他类型同理,因为java会将其补码的低字节部分截取并转换为原码

下面是一个具体实例

		byte b1=(byte)128;
        byte b2=(byte)129;
        byte b3=(byte)130;
        byte b4=(byte)131;
        byte b5=(byte)256;
        byte b6=(byte)257;
        System.out.println("b1="+b1);
        System.out.println("b2="+b2);
        System.out.println("b3="+b3);
        System.out.println("b4="+b4);
        System.out.println("b5="+b5);
        System.out.println("b6="+b6);
        int i1=2147483647;i1++;
        int i2=(2147483647+1)*2;
        System.out.println("i1="+i1);
        System.out.println("i2="+i2);
        long l1=9223372036854775807L;l1++;
        long l2=(9223372036854775807L+1)*2;
        System.out.println("l1="+l1);
        System.out.println("l2="+l2);

结果

b1=-128
b2=-127
b3=-126
b4=-125
b5=0
b6=1
i1=-2147483648
i2=0
l1=-9223372036854775808
l2=0

Guess you like

Origin blog.csdn.net/Jay_Chou345/article/details/113850038