Java基础——类型转换注意事项及常见问题

时间:2022-02-25 10:51:20

类型转换

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

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

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

运算中,不同类型的数据先转换为同一类型,然后进行计算
 public class demon1 {
     public static void main(String[] args) {
         int i=128;
         byte b=(byte)i;//内存溢出
         //强制转换 (类型)变量名 高--->低
         System.out.println(b);
         System.out.println(i);
 ​
         //自动转换   低--->高
         double c=i;
         System.out.println(c);
         System.out.println(i);
 ​
         /*
         注意点:
         1. 不能对布尔值进行转换
         2. 不能把对象类型转换为不相干的的类型
         3. 在把高容量转换到低容量的时候, 强制转换
         4.转换时可能存在内存溢出, 或精度问题
          */
         System.out.println("========");
         System.out.println((int)23.7);//double型   23
         System.out.println((int)-45.89f);//float型 -45
 ​
         System.out.println("========");
         char d='a';
         int f=d+1;
         System.out.println(f);//   98
         System.out.println((char)f);//   b
    }
 ​
 }
 ​
 ​

常见问题

 public class demon2 {
     public static void main(String[] args) {
         //操作大数时 注意溢出问题
         //JDK7新特性, 数字之间可以用下划线分割
         int money=10_0000_0000;
         int years=20;
         int total=money*years;
         System.out.println(total);//-1474836480, 计算的时候溢出了
         long total2=money*years;//默认是int(计算完之后才转换为long类型) 转换前已经存在问题了
         long total3=money*((long)years);
         System.out.println(total3);//20000000000
         
         // L l(一般用大写)
 ​
    }
 }
 ​