Day03

JAVA类型转换

(低→→→→→→→→→→→→→→→高)

byte,short,char→int→long→float→double

自动类型转换:低→高,不需要加任何东西

强制类型转换:高→低,(类型名)变量名

//强制转换: (类型)变量名 高→低
int i=128;
byte b=(byte)i;//这里需要有一个byte类型的i才可以借用i的值,所以要强制转换
System.out.println(i);
System.out.println(b);//但答案不是128,因为内存溢出(byte的max volume是127)
System.out.println("======================="); //分割线
//转换时存在精度问题
System.out.println(((int)23.7)); //小数强转为整数 //23
System.out.println((int)-45.89f); //45
//再举一个例子
char e='a';
int f=e+1; //自动转换
System.out.println(f); //98,再把98强转到char
System.out.println((char)f); //b

//自动转换: 低→高
int c=129;
double d=c; //不需要加任何东西

注意点

1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的东西
3.在把高容量转换到低容量的时候强制转换
4.转换的时候可能存在内存溢出或精度问题

常见问题

public class Demo03 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字中可用下划线分割,且不会被输出
        int money = 10_0000_0000;
        int years = 20;
        int total1 = money*years; //-1474836480,计算时溢出了
        //如果用long
        long total2 = money*years; //结果仍是负数,默认是int,转换之前已经出现问题了
        long total3 = money*((long)years); //先把一个数转换为long
        System.out.println(total3);
   }
}
posted @ 2021-02-03 05:42  Jazmin-suki  阅读(32)  评论(0)    收藏  举报