Bootstrap

Java基础04

Java基础04

类型转换

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

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

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

  2. 运算中,不同类型的数据先转换成同一类型,然后进行运算。

  3. 类型转换分为强制类型转换,自动类型转换。

  • 从高容量转换到低容量需要强制类型转换,比如int类型转换成byte类型。

    public class Demo {
        public static void main(String[] args){
            int i = 100;
            byte b = (byte)i;
        }
    }
    
  • 从低容量转换到高容量则进行自动类型转换,比如double类型转换成int类型。

    public class Demo {
        public static void main(String[] args){
            int i = 100;
            double b = i;
        }
    }
    
    • 注意点:

      1. 不能对布尔值进行转换。
      2. 不能把对象类型转换成不相干的类型。
      3. 转换的时候可能存在内存溢出或者精度问题!
      public class Demo {
          public static void main(String[] args){
              int i = 128;
              byte b = (byte)i; // 内存溢出,输出-128
              System.out.println((int)23.7); // 丢失精度,输出23
              System.out.println((int)-45.89f);// 丢失精度,输出-45
          }
      }
      
      1. 操作比较大的数的时候注意溢出问题。
      public class Demo {
          public static void main(String[] args){
              int money = 10_0000_0000;
              int years = 20; 
              int total = money * years; // 计算时溢出,输出-1474836480
              long total2 = money * years; // 还是溢出,转换前就已经存在溢出问题了?
              long total3 = money * ((long)years); // 先把一个数转换成long类型,正确输出
          }
      }
      
      1. long类型一般会在数字后面加上L表示,建议使用大写L,小写l容易被误认为数字1。
;