1.Java变量类型的转化
第一种:基本基本数据类型的自动转化(隐式类型的转化)
基本类型取值范围从小到大的取值范围是:
byte < short < int < long <float < double
变量类型 | 占用字节 | 取值范围 |
byte | 1字节 | -128~127 |
short | 2字节 | -32768~32767 |
int | 4字节 | -2147483648~2147483647 |
long | 8字节 | -9223372036854774808~9223372036854774807 |
float | 4字节 | 3.402823e+38 ~ 1.401298e-45 |
double | 8字节 | 1.797693e+308~ 4.9000000e-324 |
变量的自动转化只能从取值小的数据类型转化为取值大的数据类型,如下代码将一个取值为12的int类型转化为byte类型,系统回显报错,无法转换。
但反过来,将小的数据类型的值赋予大的数据类型的值确实可以的。
出去上述的6种数据类型之外,我们学习到的还有char字符型,跟Boolean类型,char类型对于上述的类型大小转化来讲又是另一个分支。
char < int < long < float < double
但char类型无法向小于int的类型转化,而Boolean无法向其他类型转化,其他类型也无法转化成Boolean类型。
第二种:强制类型转化
强制类型转换不推荐使用,会导致精度的缺失,如下面的int类型转换。如果超过数据类型的取值范围,便会开始在赋值,如下示的byte类型,超过了取值范围127,便从-128开始继续向前。
public class helloword{
public static void main (String[] args){
int b=(int)3.14;//强制将小数取整数部分
byte c=(byte)130;
System.out.println(b);
System.out.println(c);
}
}
代码输出结果为:3 与-126