Fork me on GitHub

类型转换

优先级

低-------------------------------------------------->高

byte -> short -> char -> int -> long -> float -> double

强制类型转换

高 -> 低

自动类型转换

低 -> 高

public class Demo04 {
   public static void main(String[] args) {
       int i = 128;
       byte b = (byte) i;//内存溢出

       //强制转换 (类型)变量名   高->低
       //自动转换                 低->高

       System.out.println(i);//128
       System.out.println(b);//-128

       /*
       * 注意点
       * 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

       //操作比较大的数的时候,注意溢出问题
       //JD7新特性,数字之间可以用下划线分割
       int money = 10_0000_0000;
       System.out.println(money);
       int years = 20;
       int tatal = money * years;
       System.out.println(tatal);//-1474836480, 计算的时候溢出了
       long total2 = money * years;
       System.out.println(total2); //-1474836480

       long total3 = money * ((long)years); //降类型转化为long
       System.out.println(total3);  //20000000000
       
  }
}
 
posted @ 2022-06-01 13:40  944964684  阅读(257)  评论(0)    收藏  举报
1