public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //溢出,且强制类型转换 格式 (类型)变量名 高--->低
System.out.println(b);
int n = 128;
double d = n; //自动类型转换 低--->高
System.out.println(b);
System.out.println("===============================");
/*
* 注意点:
* 1、不能对布尔值进行类型转换
* 2、不能把对象类型转换为不相干的类型
* 3、在高--->低转换时,需要强制类型转换
* 4、在进行类型转换时可能存在内存溢出问题,或者精度问题
* */
System.out.println((int)23.31f); //23
System.out.println((int)-45.68f); //-45
System.out.println("===============================");
char c = 'a';
int t = c + 1;
System.out.println(c);
System.out.println(t);
System.out.println((char) t);
}
}
溢出问题
public class Demo05 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int days = 20;
int total = money * days;
System.out.println(total);
//-1474836480 数量太大,溢出了
long total2 = (long)total;
System.out.println(total2);
//这样也是不行的,因为虽然转换了类型但是两个变量是以int形式进行运算的,所以在进行
//类型转换时已经是溢出了
long total3 = money *((long)days);
System.out.println(total3);
//这次就可以了,在计算之前days就已经是long型数据,money自动转换为long型,所以不会溢出
}
}