前言
马上就要面试了,根据前面课程所学内容,把自己容易记混淆的地方重新梳理了一下写成笔记,方便日后查阅复习,话不多说,一起来看下吧!
一、基本数据类型
基本数据类型分成4种,我们来一个一个介绍
1.1 整数类型
1.1.1 Byte
在说字节前,我们先要知道比特(bit),也就是我们常说的位,位是计算机中最小的传输单位,由0或1表示
一个字节有八位,即1Byte = 1bit,默认值为0
其中,第一位为符号位,0为正,1为负,因此,一个字节能表示的最大正数为0111 1111,转换成十进制就是(2^7)-1,即127
最大负数呢,就是1111 1111,2^7,即-128
最后我们能够得出,1个字节可表示的数值范围为 -128 ~ 127
1.1.2 short
除了字节需要用多少位来表示,其余的数据类型则直接用字节来表示
short数据类型占2个字节,16位,所能表示的数值范围为 -2^15 ~ (2^15)-1,即-32768 ~ 32767
默认值为0
1.1.3 int
int是我们经常使用的数据类型,它占4个字节,可表示范围为 -2^31 ~ (2^31)-1,默认值为0
1.1.4 long
long占8个字节,可表示范围为 -2^63 ~ (2^63)-1
long基本上就已经能表示很大的数了,但如果我们有一天真的需要用到比long的最大数值还要大的数时该怎么办呢?
这就会用到Math这个类,该类中有一个静态方法bigInteger可以表示比long还大的数值
整数类型就介绍完啦,可以看出来一个规律,假如一个整数类型占n位,它所能表示的数值范围就为 -2^(n-1) ~ (2^(n-1))-1
默认值为0l
1.2 浮点数类型
1.2.1 单精度浮点类型float
float占4个字节,第一位仍为符号位,接着符号位的八位为指数部分,这里指数部分的第一位规定为符号位,因此求出来的十进制数值需要减127才是真正的指数部分,剩余23位为尾数部分,如下图所示:
尾数部分的第一位固定为1,至于为啥为1呢?规定!就这么设计的!
因为这一位始终为1,所以在存储时并非以数字形式进行保存,节省空间
它所能表示的范围为 -3.403E38 ~ 3.403E38 (E38为E的38次方),默认值为0.0f
1.2.2 双精度浮点类型double
double类型占8个字节,可以表示15或16位有效数字,取值范围为 -1.798E308 ~ 1.798E308,默认值为0.0d
单精度与双精度对比如下:
浮点数类型都是一个不太精确的数,用了浮点数就意味着舍去了精确,如最常见的,0.1+0.2用浮点数计算的话结果为0.30000000000000004,因此需要精确计算时不要使用浮点类型,可以使用java.math.BigDecimal
1.3 布尔类型
1.3.1 boolean
布尔类型只有一种,boolean,取值只有true或false,所占大小没有规定,一般认为是一个字节,8位,默认值为false
1.4 字符类型
1.4.1 char
char类型只占两个字节,因为其表示的是字符,因此没有负数,无符号位,取值范围为 0 ~ 65535,存储时会把字符转换成对应的ASCII码进行存储,默认值为0
在这里就不得不记住几个常用的ASCII码值了
字符 | ASCII |
0 | 48 |
A | 65 |
a | 97 |
空格 | 32 |
换行符 | 10 |
1.5 总结
基本数据类型呢,就是不用new直接可以使用,基本数据类型之间可以转换,把小类型的值赋值给大类型时会自动转换,但把大类型赋值给小类型时,需要用到强制转换
对于基本数据类型,判断值是否相等用==,而引用数据类型==则是判断地址是否相等