JAVA基础
类型转换
低-------------------->高
byte,shor,char->int->long->float->double
注意:运算中,不同类型数据先转换为同一类型,在进行运算。
转换特性
- 强制转换:高转低–(内存溢出,精度损失)
- 自动转换:低转高
- 计算时,溢出问题,要在计算时就考虑强转。
public class ChangeType {
public static void main(String[] args) {
int i = 128;//128
byte b = (byte)i;//强转,内存溢出
//强转:高->低:(类型)变量名
//自转:低->高
System.out.println(i);//128
System.out.println(b);//内存溢出(值不确定)-128
double db = i;
System.out.println(db);//128.0 自转
/*
* 注意点:
* 1.不能对布尔类型进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换为低容量时,强转
* 4.转换的时候可能存在内存溢出,或者精度问题
* */
System.out.println("____________________");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
System.out.println("____________________");
char c = 'a';
int d = c + 1;
System.out.println(d);//98
System.out.println((char)d);//b
//操作比较大的数的时候,注意溢出
//JDK7新特性,数字之间可以用下划线分割
System.out.println("= = = = = = = = = = = =");
int money = 10_0000_0000;
int years = 20;
int total = money * years;
System.out.println(total);//-1474836480,溢出
long total2 = money * years;//计算完是int,此时已经溢出,再转也是错误的
System.out.println(total2);//-1474836480 默认int,转换之前已经存在问题
long total3 = money * (long)years;//计算为已转换为long.
System.out.println(total3);//20000000000
//L ,l 一般用L,方便区分字符l和数字1。
}
}