文本关键字:8种、基本数据类型、整数类型、浮点类型、字符类型、布尔类型java
在Java中,所使用到的类型能够分为两大类,一类是基本数据类型,一共有8种,包含:整数,小数,字符,布尔。另一类是引用类型,包含:字符串,数组以及各类Java类。数组
整数类型是一个很经常使用,也比较简单的类型,在计算机中以二进制的方式存储,其中有一位是符号位。ide
long:-2^63 ~ 2^63 - 1编码
对于浮点(小数)类型,存储的方式与整数有所不一样,其中符号位固定为1位,另外两部分为指数部分和小数部分。咱们都学过科学计数法的表示方式,对于十进制,小数点前的部分的取值范围为1-9,在存储前也会整理成二进制的形式,会变成(+/-)1.b × 2^a。那么指数部分对应的就是a,尾数部分对应的就是b。
对于float,指数部分为8位,尾数部分为23位。对于double,指数部分为11位,尾数部分为52位。code
double:约4.9 × 10^-432~1.7 × 10^308,精度为15~16位blog
对于字符类型,在进行存储时,也一样是一个整数,只不过在使用时会进行编码。说的直白一些就是,创建起了一个数字和字符之间的对应关系,只要明确字符对应的数字,或者直接将字符给出,都可以正确表示出一个字符。字符串
charit
布尔类型是一个范围最小的数据类型,只用一个二进制位就能够来记录,0表示false-假,1表示true-真。编译
当咱们在使用一个数据类型时,总会进行一些直接赋值的操做,完整的格式以下:class
如:int i = 5;char c = '中';double = 3.14;那么出如今等号右侧的值就被称为字面值。
图中黑色的部分,能够自动进行转换,而且不会出现任何使用上的问题,只不过存储数据空间须要变大些,这也就是由低精度向高精度的转换。
其中红色箭头的部分,也能够自动进行转换,即:代码上不须要添加转换的操做,且编译不会出现问题。可是在使用时会出现精度丢失的问题,由于对于整数类型,在其所支持的存储范围内精度都是能够保证的,而对于float和double类型,精度只有相应的6~7和15~16位,因此在使用时必定要注意!
那何时须要手动来进行类型转换呢?就是与箭头方向相反时,以及由高精度到低精度来进行赋值操做时,必需要手动进行强制转换。这意味着,你知道这其中的风险,并必定要这样作,那么没法被记录的字节将被直接截断和丢弃,最高位被识别为符号位。因此,只有当数据自己不会超出目标数据类型时,咱们才会进行转换,不然有可能会获得各类奇怪的结果。
当咱们在使用表达式进行计算时,如最基本的四则运算,加减乘除。
short s1 = 40; short s2 = 40; short s3 = s1 + s2;// 该行编译错误,why? short s4 = (short)(s1 + s2);// 编译经过
对于以上的状况,是由于出现了类型提高,当符号两侧出现整数时,运算结果的类型将被提高为默认的整数类型:int,而将int类型赋值给short是须要类型转换的。一样,运算符号两侧出现小数类型时,运算结果的类型将被提高为默认的浮点数类型:double,在赋值给其余变量时一样要进行类型转换。