数据类型
Java的数据类型有两大类
- 基本类型(primitive type)
- 基本类型都属于关键字
- 引用类型(reference type)
- 类
- 接口
- 数组
具体分类
基本类型又可以细分为以下类型
- 数值类型
- 整数类型
- byte
- 占1个字节
- 范围:
-128
~127
(2(-7)~27-1)
- short
- 占2个字节
- 范围:
-32768
~32767
(2(-15)~215-1)
- int
- 占4个字节
- 范围:
-2147483648
~2147483647
(2(-8)~28-1)
- long
- 占8个字节
- 范围:
-9223372036854775808
~9223372036854775807
(2(-63)~263-1) - 因为这个类型数值太大,所以一般如果使用了
long
,则会在数值最后加一个L
,例如long number = 30L;
- byte
- 浮点类型
- float
- 占4个字节
- 一般如果使用了
float
,则会在数值最后加一个F
,例如float number = 50.1F;
- short
- 占8个字节
- float
- 字符类型
- char
- 占2个字节
- 注意这里是字符,不是字符串,所以只能一个字符,例如
char name = 'a';
,如果是char name = 'ab';
那么就会报错。中文则是一个字就可以,两个或者以上的字就不行。符号则是一个符号就可以,两个或者以上就报错,例如char name = '+';
就可以 - 字符串(
String
)是一个类,不是基本类型,也不是关键字,属于引用类型
- char
- 整数类型
- 布尔类型(Boolean)
- 占1位(1 bit),因为其数值只有
true
和false
- 占1位(1 bit),因为其数值只有
注
- 位(bit):是计算机内部数据储存中最小单位,1位就能存储计算机语言中的一个
0
或者1
。例如11001100
是一个八位二进制数。一般用b
表示 - 字节(byte):1个byte(字节)即为8个bit(位),是计算机中处理数据的基本单位,一般用
B
表示。1B = 8b
- 电脑参数中经常提到的32位系统、64位系统,指的就是计算机的CPU单次可以处理数据的量,64位电脑表示该电脑单次可以处理8B(8byte,即64bit)的数据。高位电脑可以向下兼容(安装32位的软件、系统),但低位电脑不能向上兼容。主要区别如下
- 寻址能力不同:寻址能力简单点说就是支持的内存大小能力,64位系统最多可以支达128 GB的内存,而32位系统最多只可以支持4G内存
- 运算速度不同: 32位处理器一次只能处理4个字节的量,而64位一次可以提取64位数据,也就是8个字节的量,比32位提高了1倍
- 兼容性不同:32位操作系统只可以安装使用32位架构设计的软件,而64位的CPU既可以安装使用32位软件也可以安装使用64位软件
- 上面的整数类型中,byte占用1个字节,即8bit,所以系统会分配8个位置来储存这个数(例如00000001、01010010)。而计算机中,我们规定首位为符号位,即1代表负数,0代表正数,所以实际上只有7个位置来表达这个数的大小,所以范围是-128~127(2(-7)~27-1)。同理,short占2个字节,所以系统分配了16个位置来储存,而首位是符号位,所以数的大小的范围是-32768~32767(2(-15)~215-1)
- 因为
0
这个数在二进制中是0000
,但因为计算机规定了首位是符号位,所以就算我们人为定义0
既不是正数,也不是负数,但在计算机中,0000
的首位是0
,其实是占用了正数的一个位置的,所以计算范围时,正数要比负数少1。例如,-2~2,中间其实有5个数,-2,-1,0,1,2。而因为是二进制,所以范围大小都是2的倍数,所以只能取-2,-1,0,1