java类型转换
java是强类型语言,所以进行一些运算时,需要用到类型转换
运算中,运算中不同类型的数据先转化为同一类型,再进行运算
强制类型转换
自动类型转换
public class Demo03 {
public static void main(String[] args) {
//强制类型转换 (类型)变量名 高-->低
//自动类型转换 低-->高
int i = 128;
byte b = (byte) i; //内存溢出
double d = i;//自动转换
System.out.println(i);//输出结果为128
System.out.println(b);//输出结果为-128
System.out.println(d);//输出结果为128.0
//转换的时候可能存在内存溢出,或者精度问题
System.out.println((int) 23.7);//输出结果为23
System.out.println((int) -45.89f);//输出结果为45
char c = 'a';
int i1 = c + 1;//自动转换
System.out.println(i1);//结果为98
System.out.println((char) i1);//强制转换,结果为b
}
}
容量:
低------------------------------------->高
byte,short,char-->int-->long-->float-->double
(float>long,因为小数优先级大于整数)
注意点:
-
不能对布尔进行转换
-
不能把对象类型转换为不相干的类型
-
再将高容量转换到低容量时,强制转换;反之将会自动转换
-
转换的时候可能存在内存溢出,或者精度问题
public class Demo04 {
public static void main(String[] args) {
//操作比较大的数时,需要注意溢出问题
//JDK7新特性,数字之间可以用下划线分割,方便人数零
int money = 10_0000_0000;
int years = 20;
int x = money*years;
long x1 =money*(long) years;//在计算前将int转为long
long x2 = money*years;//默认时int,转换之前已经存在问题,所以不能用long x = money*years,(在计算之后才转为long)
System.out.println(x);//结果为-1474836480,发生了溢出
System.out.println(x1);//结果为20000000000
System.out.println(x2);//结果为-1474836480,没有解决问题
}
}

浙公网安备 33010602011771号