Java的数据类型一共有8种,4种整型,2种浮点型,1种是用于表示Unicode编码的字符单元的字符类型char,一种是boolean。
数据类型的分类
-
整型
长整型类型的数据后面要加后缀L(如4000000000L)。
十六进制数前有一前缀0x,如0xCAFE。
八进制数前有一前缀0,如010对应8。
从Java开始,加上前缀0b就可以写二进制数,如0b11对应3。
与C或C++不同的是,Java具有良好的可移植性,其数据类型取值范围不与运行Java代码的机器相关, 是不发生改变的。
-
浮点类型
float类型数据后面有一后缀F(如,3.14F),如果不加后缀则表示都变了类型(如,3.14表示double类型),当然double也可用后缀D表示(如,3.14D)。
在多数情况,float类型的精度很难满足需求,如用float表示大于百万的数就很困难,所以在实际运用中,浮点型数据多用double表示。
-
char类型
char类型用于表示单个字符,用Unicode编码表表示,有一些特殊转义字符序列。
-
boolean类型
boolean(布尔)类型有两个值,false和ture,用于判定逻辑条件,整型与布尔型之间不能相互转换。
数据类型之间的转换
-
合法转换
其中实线箭头表示无信息丢失的转换,虚线箭头表示可能有精度的损失。
如果两个数值进行二元操作时(如,n+f,n是整型,f是浮点型),则会将两个操作数转换为同一类型,再进行计算。
1.如果两个操作数中有一个是double型,则另一个转为double型。
2.否则,其中有一个操作数为float型,则另一操作数转为float型。
3.否则,其中有一个操作数为long型,则另一操作数转为long型。
4.否则,两个操作数都将转为int型。
-
强制类型转换
强制类型转换的语法结构是在括号内写出要转换的类型名,在括号后紧跟待转换的变量名,如,
double x=3.14;
int y=(int)x;
强制转换类型将截断小数部分将浮点型转换为整型。
如果进行类型转换,而超出了目标类型的范围,则会截断成一个完全不同的值,如(byte)300的实际值为44.