【Java基础】八种基本数据类型--原码反码补码

        Java分多钟数据类型的区分,是为了节省资源。能用1个字节存储的,就不用2个字节存储。        

Java的八中基本数据类型:

        --Boolean

        --数值类型

                --整数

                    --byte(整型,以下四种都是)

                    --short

                    --int

                    --long

                    --char(字符型)

                --浮点数

                    --float

                    --double

                    --特殊值3个:(POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN)分别是无穷大、无穷小、非数。

数据类型的长度(字节):

数据类型 boolean type short int long char float double
长度(字节)1字节=8位 1 1 2 4 8 2 4 8

各数据类型变量的表现形式: 

        整型    有4种:十进制、二进制、八进制、十六进制

        字符型有3种:单个字符、转义特殊字符、unicode值

        浮点型有2种:十进制、科学计数法

类型转换两种方式:

        强制:高位向低位。

        自动:低位向高位。

整型的特殊总结:

        所有数字在计算机底层都是以二进制形式存在。计算机以补码的形式保存所有的整数提到补码,就要先了解一下原码、反码、补码的概念:

        原码是直接将一个数值换算成二进制数。

        反码是对原码按位取反,只是最高位(符号位)保持不变。

        补码的计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;

//定义一个32位二进制整数,最高位是符号位,1表示它是个负数,0表示它是正数。最高位是2的32次方的位,从右往左,第32位就是最高位。
int bimVal3 = OB1(29个0)11;
二进制整数转换成十进制数的过程:
        二进制数为负数,先把补码-1得到反码,然后按位取反,符号位不变,得到原码。
        二进制数为正数,其补码和原码完全相同。

        先由二进制补码转成原码,之后,再由原码换算成相应的十进制数。

//定义一个32位二进制数,最高位是1,数值后添加了L后缀,因此整数占64位,第32位不是符号位,它的符号位是0。
long binVal5 = OB1(29个0)11L;
//定义一个8位的二进制整数,它占32位,因此它是一个正数,强制类型转换成byte时产生了溢出,最终导致binVal4变成了-23
byte binVal4 = (byte)Ob11101001;
溢出怎么算?

        会截断,溢出的位数会拿不到,剩下什么就是什么。


总结:

        又搞清楚了一些概念,附上一张导图。

【Java基础】八种基本数据类型--原码反码补码_第1张图片

你可能感兴趣的:(【Java基础】)