基本数据类型
1. 整型: byte, short, int, long (有符号补码数)
8 16 32 64 (有符号)
2. 浮点型: float double
32 64 (有符号)
3. 字符型: char
16 (无符号)
4. boolean型: boolean
8
-----------------------------
1. byte,short, char,int long的字面量均为int,在底层保存时均为32位,即
byte b=8; //int a=8; b=a; 即8处理为32位int型再赋值给byte型
在不超过byte,short,的表示范围内,可以直接赋值,如
byte b=127;
byte b=128; // 编译错误,byte表示范围为 -128~127, 需要强制转换
byte b=(byte)128;
由于实际是用32位保存,当用Integer.toBinaryString(i)表示其二进制数时,负数都是显示为32位(因为1不能省略),正数有多少有效位显示多少有效位
所以,long型在赋值时如果超过int表示范围的数值需要加l或者L标志,如
long l1=123; //在int范围内
long l2=123123232323L; //超出int表示范围需要补L标志
2. float double的字面量均为 double型
因为float和double的阶码尾数的位数均不同,不能直接赋值
float f1=122.122; //编译错误
float f2=122.122f; //correct
double d1=122.122; //correct
double d2=122.122d; //correct
3. 精度上 precision : byte<short<float <int<double<long
7 15 23 31 52 63
PS:浮点数比较和运算时只能做到尽可能精确,但不如整型准确,比如
double d=2.6;
d=d-2; // 输出d 值为 0.6000...01 // 0.6在保存在二进制浮点数时就除不尽
---------------------
补码,即最高位为符号位的二进制表示方法
n位补码的表示范围是 -2^(n-1) ~~ 2^(n-1)-1,
如 8位补码的表示范围是 -2^7 ~~ 2^7-1 ,即-128 ~~ 127
正数直接表示为二进制数,符号位为0; 负数的二进制表示方法为 正数的二进制数取反+1 (注意最小负数不能用此方法)
最大正数的表示形式为 01111.... (除符号位全部为1)
最小负数的表示形式为 10000... (除符号位全部为0),每+1即为高一位的负数
---------------------------
char型为无符号整数,数值为字符的unicode编码值,能表示2^16个字符
总结:
数据类型包含 基本数据类型 和引用数据类型
基本数据类型包含布尔类型和数值类型
数值类型包含定点类型和浮点类型
定点类型包含 byte, char, short,int long
浮点类型包含 float double
布尔类型为boolean
引用数据类型包含类,接口,数组