Java基本数据类型
一、Java的四大数据类型分类
1.整型
byte(字节型)、short(短整型)、int(整型)、long(长整型)
2.浮点型
float(单精度浮点型)、double (双精度浮点型)
3.字符型
char(字符型)
4.布尔型
boolean
二、八种基本类型与包装类对应关系和默认值
例如:
装箱 Integer a=new Integer();
a=100;
拆箱操作 int b=new Integer(100);
三、数据类型详细分析
整型:
用来表示整数的数据类型:int 是我们使用的最多的一个整型类型
1.byte的取值范围:-128~127(-27 ~ 2 7-1)
2.short的取值范围:-32768~32767(-215 ~ 2 15-1)
3.int 的取值范围:-2147483648~2147483647(-231 ~ 2 31-1)
4.long的取值范围:-9223372036854774808~9223372036854774807(-263 ~ 2 63-1)
浮点型
用来表示小数的数据类型:float在精度要求不高时使用,double在数值精度要求高时使用
1.float的取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以1038,
而e-45 表示乘以10-45)
2.double的取值范围:1.797693e+308~4.9000000e-324
字符型
用来表示单个字符的数据类型:
char的取值范围:0~65535
Java中采用的是Unicode字符集编码,每一个字符都有一个对应的ASCII值,属于int类型的码值,
常见的字符码值为:
字符’0’到’9’的码值 :48到57
字符’A’到’Z’的码值 :65到90
字符’a’到’z’的码值 :97到122
可知:大小写字符ASCII值间存在32的差值
布尔型
1.只能取两个值:“true(真)” 或者 “false(假)”
布尔型变量在运行过程中通常用作标志,比如进行逻辑测试以改变程序流程
四、类型转换
1.boolean类型与其他7种类型的数据都不能进行转换
2.其他7种数据类型之间都可以进行转换,只是可能会存在精度损失
3.转换分为自动转换和强制转换:
(1)自动转换:无需任何操作
(2)强制转换:需使用转换操作符
4.将其中6种数据类型按下面顺序排列为:double > float > long > int > short > byte
(1)从右转换到左,那么可以自动转换
(2)从左转换到右,或char 和其他6种数据类型转换,则必须使用强制转换
1.自动转换
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。
转换规则:从存储范围小的类型转换为存储范围大的类型
具体规则为:byte→short(char)→int→long→float→double
例如:在给b赋值时,JVM先把s的值转换为int 类型然后再赋值给b
short s=10;
int b=s;
注意: 整型转换之间不会存在精度的损失,但在整型与浮点型转换之间由于存储精度的不同,可能 会存在数据精度的损失
2.强制类型转换
强制类型转换,也称显式类型转换,是指必须通过书写代码才能完成的类型转换,且可能存在相应的精度损失,所以必须书写代码,还要忍受该中损失时才进行类型转换。
转换规则:从存储范围大的类型转换为存储范围小的类型
具体规则为:double→float→ long→int →short(char)→ byte
例如:
double a=1.12;
int b = (int)a;
3.赋值表达式中的类型转换
(1)类型相同:
类型相同是指赋值号左端的数据类型和赋值号右端的数据类型完全一致。此种情况可以正确赋值。
例如:
int s =100; //类型相同
long b = 100L; //类型相同
(2)类型兼容:
类型兼容是指赋值号左端的数据类型比赋值号右端的数据类型大,此时系统会自动将赋值号右端的数据类型转化成和赋值号左端一样的数据类型,这里所说的数据类型大,是指数据类型的位数长。
例如:
long b = 100; //100是int类型,将自动转化为100L
double d= 12.345F; //12.345F是float类型,将自动转化为12.345
(3)类型不兼容:
若赋值号右端的数据类型比赋值号左端的数据类型长则类型不兼容。此时系统在编译时会产生“可能存在精度损失”的编译错误。
例如:
int s = 100L; // 100L 是long类型,不兼容
float x = 12.345; //12.345是double类型,不兼容