类型转换
Java属于强类型语言,所以在运算的时候需要用到类型转换。
从低到高排序
低——————————————————>高
byte short char——>int——>long——>float——>double
在运算中需要把不同的数据先转换为同一类型,然后在进行运算
public class text {
public static void main(String[] args) {
int a = 111;
double b = a;
System.out.println(b);//√√√ 自动转换
System.out.println("==================================");
double a1 = 13.14;
int b1 = (int)a1;
System.out.println(b1);
System.out.println("=============================");
//这样就会报错 因为数据类型不一样
//强制转换 适用于 高转低
//自动转换 就是 低转高
int a2 = 133;
byte c = (byte)a2; //强制转换 (类型)变量名 例如:double d = (double)a;
// 但是输出结果为-123 原因是内存溢出了
System.out.println(c);
System.out.println((int)13.14);//输出为13
System.out.println("======================================");
char d = 'b';
int a3 = d+1;
System.out.println(a3);
System.out.println((char)a3);// 输出为99 c
}
}
注意点
- 不能转换布尔类型
- 不能把对象类型转换为不相干的类型
- 高转低 强制转换
- 转换中可能存在内存溢出,或者精度问题
补充
int money = 1000000000;
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480 结果溢出了
long total2 = money*years;
System.out.println(total2);// -1474836480 结果一样 因为转换之前就是int 所以在转换之前就出现问题了
long total3 = money*(long)years; // 需要先把一个数据进行转换
System.out.println(total3); //结果正确 20000000000