一,八种数据类型取值范围以及默认值
byte—— -128~127 所占字节——1
short—— -32768~32767 所占字节——2
int—— -2147483648~2147483647 所占字节——4
long—— 不用特殊记忆 所占字节——8
float—— 不用特殊记忆 所占字节——4
double—— 不用特殊记忆 所占字节——8
boolean—— true,flase 所占字节——1
char—— 0~65535 所占字节——2
注意:char类型和short类型所占字节相同,表示种类总数一样,但char类型没有负数,可以表示更大类型的正整数
byte,short,int,——默认值为0,long——默认值为0L
boolean——默认值为false (0表示false,1表示true)
char——默认值为\u0000 对应ascii表为空白(不是空格)
注意:八种基本数据类型默认值向0看齐
二,八种基本数据类型详解:
1.char类型中的转义字符 \
转义字符出现在特殊字符之前,会把特殊字符转换为普通字符;出现在普通字母之前,会把普通字母转化为特殊字符(有特殊功能)
例如:\n换行符,\t制表符,\' 普通单引号,\" 普通双引号,\\ 普通反斜杠
2.整数型
--在Java语言中的整数型字面值被默认当成int类型来处理,例如1,16510,56498都为先默认为int型的数据,如果一个数特别大超出了int类型的范围,我们想要把这个整数一开始就当成long类型来处理,我们需要在这个数的后面加一个 l(小写的L)或者L,例如 56456118981L这个数一开始就为long型,就不是默认的int类型了
--在Java中,大的数据类型赋给小的数据类型需要强制转换,强制转换要加强制转换符,例如:
byte a = 159; 159超出了byte类型的最大值127,所以我们需要进行强制转换,应写为:byte a =(byte) 159;
再比如byte a = 5; 刚才说了在Java语言中所有的整数型字面值的默认类型为int型,int类型大于byte类型,所以我们需要进行强制转换,写为byte a = (byte) 5; 但因为 5 没有超出byte类型的最大值,在实际应用中我们不需要这样写,sun公司规定了byte,short,char类型,当字面值没有超出他们的范围时我们可以直接编译,不需要再进行数据类型的强制转换,计算机会自己完成。
--当我们进行强制转换时,会发生精度损失,且损失较大。例如,原始数据:00000000 00000000 00000000 01101100,当它转换为byte类型变成01101100 会将int类型数据砍掉前面三个字节变成byte类型存储在计算机内部(计算机内部储存的二进制都为补码形式,显示时要翻译成原码)。精度损失的后果由程序员看来承担,所以要慎用强制类型转换。
3.浮点型
float(单精度)四个字节
double(双精度,精度较高)八个字节,但是当数据涉及到财务类型时,double的精度是不够的,我们需要更高精度的数据类型,double的数据类型的高精度只是相对的。在基础SE库当中有更老精度的数据类型,只不过它属于引用数据类型,它是:java.math.BigDecimal
SE类库源码位置:C:\Program Files\Java\jdk1.8.0_192\src.zip(仅供参考)
SE类库字节码位置:C:\Program Files\Java\jdk1.8.0_192\jre\lib\rt.jar(仅供参考)
--在java语言中,所有的浮点型字面值默认被当作double类型来处理,如例如 5.0 如果想要这个字面值被当作float类型来处理我们需要在他的后面加 f \ F,例如:float a = 5.0f;或者 float a =5.0F;
如果:float a = 2.0; 这样是无法通过编译的,因为大容量放到小容量里需要强制类型转换。所以我们需要写成:float a = (float) 2.0; 或者 float a = 2.0f; 或者 float a = 2.0F;
注意:float和double存储数据时存储的都是近似值,因为我们生活中有些小数例如3.33333333...这样的无限循环小数,二进制无法表示并且计算机的空间是有限的,不可能无限开辟,所以只储存近似值。
4.布尔型
--在Java中boolean只有两个值:flase和true,没有其他值。
在底层存储时boolean类型占一个字节,因为在实际存储时flase底层存储为0,true底层存储为1,1和0都只占一个字节.
布尔类型后面的开发中非常重要,常用在逻辑运算和控制语句中。
布尔类型赋值举例:boolean a = true; boolean b = 1;该语句错误,类型不兼容,1为int型数据
三,八种基本数据类型之间的转换
1.八种基本数据类型当中除了布尔类型boolean的其他七种数据类型都可以进行数据类型转换
2.小容量向大容量类型进行类型转换一般为自动转换,大容量转换为小容量需要进行强制类型转换,其中数据类型容量大小排序:
byte < short (char) < int < long < float < double
注意:浮点型数据不管占几个字节,都比整数型容量大
3.当整数型字面值没有超出byte,short,char的取值范围可以直接进行复制,规则在上面整数型有讲。
4.byte,short,char类型的数据进行混合运算时,全部换成int类型再进行运算
5.多种混合类型数据进行运算时先转换成容量最大的类型再进行计算