类型转换
- 由于java是强类型语言,所以要进行有些运算的时候,要进行类型转换
- 低----------------------------------------------------->高
- byte,short,char---->int--->long--->float--->double
- 小数的优先级大于整数
- 运算中,不同类型的数据先转换为同一类型,然后在进行运算。
强制类型转换
(类型)变量名 高----->低
public class six {
public static void main(String[] args) {
int i = 128;
byte a = (byte)i;//内存溢出
System.out.println(a);
}
}
输出结果为:-128
因为数据类型byte的长度是-128 ~ 127,超出范围就会出现内存溢出的问题
自动类型转换
低----->高 不需要在前面加类型
public class six {
public static void main(String[] args) {
int i = 111;
double a = i;
System.out.println(a);
}
}
输出结果为:111
注意点
- 不能对布尔值进行转换
- 不能把对象(变量)类型转换为不相干的类型
- 在把高容量转换为低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
数据类型转换例子
public class six {
public static void main(String[] args) {
System.out.println((int)23.7);
System.out.println((int)-35.89);
}
}
输出结果为:
23
-35
public class six {
public static void main(String[] args) {
char a = 'a';
int x = a;
System.out.println(x);
System.out.println((char)x);
}
}
输出结果为:
97
a
public class six {
public static void main(String[] args) {
int money = 20_0000_0000;
int years = 20;
int total = money * years; //1345294336计算的时候溢出了
long total2 = money * years; //默认是int,转换之前已经存在了问题
long total3 = money * (long)years; //先把一个数转换为long
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
输出结果为:
1345294336
1345294336
40000000000