java中的的原始数据类型可分为4大类:整数型(byte,short,int,long),浮点型(float,double)布尔型(boolean)字符型(char)。
首先我们先要知道它们的各自取值范围(大概记住byte short int char就行),如图:
我们也可以自己推出来byte类型的范围。因为1byte表示1字节即8个比特位。即01111111,第一位为符号位。通过二进制算法可以知道2^7-1即127。其他类型道理一样。
1,8种基本数据类型当中除了布尔类型之外剩下的7种类型之间可以相互转换。
2,小容量向大容量转换,称为自动转换,大容量向小容量转换称为强制转换(需要加强制类型转换符,程序才能通过编译,但在运行阶段可能会损失精度)。
容量从小到大排序为:byte<short<int<long<float<double<char
我们先看整数型,
看我们的代码,当给long类型赋值2147483647时,编译是没问题的,因为这是int类型取值范围的最大值,还并没有越界(直接写数字时,默认的是int型),但当我们赋值为2147483648时很明显编译不通过,所以我们要写成2147483638L,表示我们的数字为long型。还是回到我们的代码块,前面不是说直接写数字时,默认的是int型吗?但byte b = 25为什么可以编译通过呢?这里就有一个知识点:当整数字面值没有超过byte short char 的取值范围时,我们是可以直接赋值给byte short char类型的变量的。记住就行。
3,当byte short char 混合运算时,会先各自转换成int类型再做运算,如图:
我们的int i 是能通过编译的。
4,多种数据类型混合运算时,会先转换成容量最大的那种类型再做运算。
这里我们long l2是通过编译的。
浮点型(float double)
float是单精度,double是双精度。double的精度更高。
1,虽然long占8个字节,float占4个字节,但是float的容量更大(底层复杂,记住就行),任何一个浮点型都比整数型的内存大。
2,java中规定任何一个浮点型的字面值都被当做double型来处理,如果想要被当做float型,就在后面加f/F。
3,当我们整数型与浮点型做运算时,会先将整数型转换成浮点型再做运算,然后再返回的是浮点型。
char类型
这里我们要了解一下ASCII码表:
重点记住49时为数字1;65时为大写字母A,;97时为小写字母a。
Boolean类型
这里无非true 和 false。