1.基本数据类型
按字节分:
byte 一个字节
short 两个字节
char 两个字节
int 4个字节
float 4个字节
long 8个字节
double 8个字节
boolean 无确定大小
按值类型分:
1.byte,short,int,long
2.float,double
3.char
4.boolean
2.扩展知识点:
字节:
一个字节(byte),等于8位(或 比特“bit”)。 每一位可代表0和1。
直接从数字表面理解,一个字节可代表的数字有 2^8个,转换为十进制为0~255。
问:为什么java中byte最大值为127,而不是255?
byte的首位用作符号位,0表示整数,1表示负数。所以byte最大值为011111111,用十进制表示为127。
问:理论上最小值为-127,为什么实际上byte最小值为-128,-128表示什么?
这里就涉及到计算机的原码、反码、补码的相关知识了。
正数:
原码 == 反码 == 补码
就是整数的源码、反码、补码都是一样的。
负数:
反码 == 原码的非符号位取反
补码 == 反码 + 1
如 -1
原码:1000 0001
反码: 1111 1110
补码: 1111 1111
实际上,计算机内部是用补码来存储一个数的。
那么,为什么要用补码来存呢?
很简单,因为计算机相反数的补码相加等于零,能够正确表示计算关系。
举一个简单的例子:
1+(-1)= 0
如果采用原码相加:
0000 0001 + 1000 0001 = 1000 0010 == -2
这显然是不对的。
如果采用补码相加:
0000 0001 + 1111 1111 = 1 0000 0000 大于8为的数字被截取,所以1 0000 0000 == 0,符合实际计算关系。
那么 -128怎么来的?
因为最高位表示符号位的情况下,计算机可以表示 正零 0000 0000 与 负零 1000 0000 两个数,
而实际在数学的世界里零既不是正数也不是负数。
所以就有一个规定 1000 0000表示-128 ,多表示一个数。且可以避免与实际数学不一样的正负零歧义