java的基本数据类型
1.数值型:byte,short,int,long,float,double
2.字符型:char
3.布尔型:boolean
数据类型 | 占据字节数 |
---|---|
byte | 1个字节 |
short | 2个字节 |
int | 4个字节 |
long | 8个字节 |
float | 4个字节 |
double | 8个字节 |
char | 2个字节 |
boolean | 1个比特(1个二进制位) |
byte可以保存的数据范围:-128~127 (-27 ~ 27-1)
short可以保存的数据范围:-32768~32767 (-215 ~ 215-1)
int可以保存的数据范围:-2147483648~2147483647 (-231 ~ 231-1)
long可以保存的数据范围: -263 ~ 263-1
long型常量用后缀L来表示
long width=12L;
float常量后面必须要有f或F
float x=23.1F;
double常量后面可以有后缀d或D**,也可以没有
long k=153d;
将这7种类型按精度从低到高排列:
byte,short,char,int,long,float,double
当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
(可以理解为级别高的类型所包含的数据范围广,那么级别低的数据肯定被包含在级别高的数据范围中,所以可以直接自动转化)
当把级别高的变量的值赋值给级别低的变量时,必须使用类型转换运算。
int x=(int)34.89; //这里的34.89默认为时double类型的
long y=(long)56.78F;
int z=(int)199L;
注意: 当把一个int型常量赋值给一个byte,short和char类型变量时,不可超出这些变量的取值范围,否则必须进行类型转换运算。
常见的错误: 把一个double类型变量赋值给float变量时,没有进行类型转换运算,如
float x=12.4; //这句代码是错误的
可以看到程序中只写了这一句话,下面出现报错,原因就是如果浮点数后面没有加f或者F,会被默认为时double类型,那么将级别高的double类型赋值给级别低的float类型肯定会报错,因为可能这个double类型表示的数据大小已经超过了float数据所能表示的范围。
正确的写法是
float x=12.4F;//写法1
float x=(float)12.4;//写法2