在Java中有8中基本数据类型,分别为:
整型: byte、short、int、long
浮点型:float、double
布尔型:boolean
字符型:char.
byte: 8位, 封装类:Byte
1byte = 8bit; -128~127之间所有的整数
"位"是byte,"字节"是bit
2个字节表示一个字符。
声明举例:byte a = 1;
short: 16位,短整型,封装类Short,范围在(-2^15) ~ (2^15)-1 之间
short 2byte = 16bit
声明举例:short a = 1;
int : 32位,整型,封装类Integer ,范围在(-2^31) ~ (2^31)-1 之间
int 4byte = 32bit
默认整型直接量为int
声明举例:int a = 1;
long: 64位,长整型,封装类Long,范围在(-2^63) ~ (2^63)-1 之间
ling 8byte = 64bit
声明举例:long a = 1L;或者 long a = 1l;
float: 单精度浮点型,封装类Float,
float 4byte = 4*8bit = 32bit 32位
声明举例:float a = 1.1f;或者float a = 1.1F;
double:双精度浮点型,封装类Double
double 8byte = 8*8bit = 64bit 64位
默认浮点型直接量为double
声明举例:double a = 1.1;
char: 字符类型,封装类Character
Java中采用unicode编码
char类型占用两个字节,
java中的字符类型用单引号声明
声明举例:char a = 'a';
char a = 97; //ascii中97对应的字符为a
char a = '中';
char a = '\u987f';
boolean:布尔型,封装类Boolean
只能存储 true ,false
------------------------------------------------------------------------------------------------
数据类型之间的转换:
自动类型转换:byte --> short --> int --> long --> float --> double
char-----^
小的类型可以自动转换成大的类型
例如:double a = 1; //会自动转换成1.0
强制类型转换:大的类型转换成小的类型,会出现精度损失或者溢出
例如:double a = 1.0;
float a1 = (float)a;
-----------------------------------------------------------------------------------------------------
整型直接量可以直接赋值给byte,short,char,只要不超过其范围就可以
byte,short,char参与运算时,会先统一转换成int类型,然后再运算
整数之间相除结果还是整数,小数舍去
不同数据类型之间运算,会先转换成大的数据类型,然后再运算
double计算时会出现舍入差,2进制系统中无法精确的表示1/10,就好像十进制中无法精确表示1/3一 样。如果需要精确计算,建议使用BigDecimal