强制类型转换:从低到高。 强制转化格式:(类型)变量名,如果内存溢出,转换可能出错。 byte b = (byte)i;//强制转换
自动类型转换:从高到低。 double d = i;//自动转换 System.out.println(d);
public class Test2 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//强制转换
System.out.println(i);
System.out.println(b);
//内存溢出,导致转换数值不定
double d = i;//自动转换
System.out.println(d);
/*
注意点:
1.不能对布尔值进行转换。
2.不能把对象类型转换为不相关的类型。
3.高容量转换为低容量时使用强制转换。
4.转换时可能存在内存溢出或精度问题。
*/
System.out.println("=======================================================");
System.out.println((int) 23.7);
System.out.println((int) -45.89f);//精度问题
System.out.println("=======================================================");
char c = 'a';
int q = c+1;
System.out.println(q);
System.out.println((char) q);
}
}
某些代码中会将小写l视为1,所以尽可能使用L。
转换溢出:
public class Test3 {
public static void main(String[] args) {
//操作比较大的数时注意溢出。
//JDK7特性,数字之间可以用下划线分割。
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = money*years;//计算时溢出
System.out.println(total);
long total2 = money*years;
System.out.println(total2);//计算过程中溢出,转换也会出问题。
long total3 = money*((long)years);
System.out.println(total3);//为避免出现错误,先将一个较大的值转换为long之类容量较大的类型。
//某些代码中会将小写l视为1,所以尽可能使用L。
}
}
Java类型转换注意:不同类型的数据需要先转化为同一类型,然后进行运算。转换的容量顺序:byte-short-char-int-long-float-double,小数优先级大于整数。强制类型转换:从低到高。强制转化格式:(类型)变量名,如果内存溢出,转换可能出错。byte b = (byte)i;//强制转换自动类型转换:从高到低。double d = i;//自动转换 System.out.println(d);public class Test2 { public stat