MENU

类型转换

November 16, 2021 • 编程,JAVA阅读设置

image_HRdAu2LfFi.png

转换类型

  1. 强制转换

    • (类型)变量名 高 > 低
  2. 自动转换

    • 低 > 高
  3. 注意点

    • 不能对布尔值进行转换
    • 不能把对象类型转换为不相干的类型
    • 在把高容量转换到低容量的时候,强制转换
    • 转换的时候可能存在内存溢出,或者精度问题(默认向 0 取整)

      int i = 128;
      byte b = (byte)i;//内存溢出
      double c = i;
      
      //强制转换:(类型)变量名  高>低
      //自动转换:  低>高
      
      System.out.println(i);
      System.out.println(b);//-128
      System.out.println(c);//128.0
      System.out.println("===========================");
      System.out.println((int)23.7);
      System.out.println((int)-45.89F);//精度降低,向0取整
      /*
      注意点:
      1.不能对布尔值进行转换
      2.不能把对象类型转换为不相干的类型
      3.在把高容量转换到低容量的时候,强制转换
      4.转换的时候可能存在内存溢出,或者精度问题(默认向0取整)
       */
      
      System.out.println("==============================");
      char d = 'a';
      int f = d+1;
      System.out.println(f);
      System.out.println((char)f);//强制转换输出b

常见问题

  • 操作比较大的数的时候,注意溢出问题
  • JDK7 新特性,数字之间可以用下划线分割

    //操作比较大的数的时候,注意溢出问题
    //JDK7新特性,数字之间可以用下划线分割
    int money = 2_000_000_000;
    int years = 20;
    int total = money*years;
    System.out.println(total);//结果溢出
    
    long total2 = money*years;
    System.out.println(total2);//一样溢出,默认是int,转换之前已经存在问题
    long total3 = money*((long)years);//先把一个数转换陈long
    System.out.println(total3);
Last Modified: February 6, 2023