Java基础——类型转换注意事项及常见问题
由于Java是强类型语言,所以要进行有些运算的时候,需要用类型转换
低----------------------------------------------------------------------------------------- >高
byte ,short ,char-> int-> float-> double
运算中,不同类型的数据先转换为同一类型,然后进行计算
public class demon1 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//内存溢出
//强制转换 (类型)变量名 高--->低
System.out.println(b);
System.out.println(i);
//自动转换 低--->高
double c=i;
System.out.println(c);
System.out.println(i);
/*
注意点:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的的类型
3. 在把高容量转换到低容量的时候, 强制转换
4.转换时可能存在内存溢出, 或精度问题
*/
System.out.println("========");
System.out.println((int)23.7);//double型 23
System.out.println((int)-45.89f);//float型 -45
System.out.println("========");
char d='a';
int f=d+1;
System.out.println(f);// 98
System.out.println((char)f);// b
}
}
常见问题
public class demon2 {
public static void main(String[] args) {
//操作大数时 注意溢出问题
//JDK7新特性, 数字之间可以用下划线分割
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total);//-1474836480, 计算的时候溢出了
long total2=money*years;//默认是int(计算完之后才转换为long类型) 转换前已经存在问题了
long total3=money*((long)years);
System.out.println(total3);//20000000000
// L l(一般用大写)
}
}