类型转换
  • 由于Java是强类型语言,所以要进行有些运行算的时候,需要用到类型转换。

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

    byte,short,char->int->long->float->double 小数的优先级一定大于整数

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。

 

  • 强制类型转换

  • 自动类型转换

     1 public class Demo03 {
     2     public static void main(String[] args) {
     3         int i = 128;
     4         byte b = (byte)i;  //-128   内存溢出     默认int
     5 
     6         //强制转换  (类型)变量名   高---低
     7         double d = i;
     8         //自动转换    低---高
     9 
    10         System.out.println(i);    //128
    11         System.out.println(b);    //-128
    12         System.out.println(d);    //128.0
    13 
    14         /*
    15         注意点:
    16         1.不能对布尔值进行转换
    17         2.不能把对象类型转换为不相干的类型
    18         3.在把高容量转换到低容量的时候,强制转换
    19         4.转换的时候可能存在内存溢出,或者精度问题!
    20          */
    21 
    22         System.out.println("============================");
    23         System.out.println((int)23.7);     //23
    24         System.out.println((int)-45.89f);  //-45
    25 
    26         System.out.println("============================");
    27         char c = 'a';
    28         int n = c+1;
    29         System.out.println(n);         //98
    30         System.out.println((char)n);   //b
    31     }
    32 }

     

 

 1 public class Demo04 {
 2     public static void main(String[] args) {
 3         //操作比较大的数的时候,注意溢出问题
 4         //JDK7新特性,数字之间可以用下划线分割
 5         int money = 10_0000_0000;
 6         int years = 20;
 7         int total = money*years;   //-1474836480, 计算的时候溢出了
 8         long total2 = money*years;  //默认是int,转换之前就已经存在问题了
 9 
10         long total3 = money*((long)years); // 20000000000   先把一个数转换为long
11         System.out.println(total3);
12 
13         //L  l(小写的l在代码中容易看成1)
14     }
15 }