java类型转换

java类型转换

java是强类型语言,所以进行一些运算时,需要用到类型转换

运算中,运算中不同类型的数据先转化为同一类型,再进行运算

强制类型转换

自动类型转换

public class Demo03 {
   public static void main(String[] args) {
       //强制类型转换       (类型)变量名     高-->低
       //自动类型转换                       低-->高
       int i = 128;
       byte b = (byte) i; //内存溢出
       double d = i;//自动转换
       System.out.println(i);//输出结果为128
       System.out.println(b);//输出结果为-128
       System.out.println(d);//输出结果为128.0

       //转换的时候可能存在内存溢出,或者精度问题
       System.out.println((int) 23.7);//输出结果为23
       System.out.println((int) -45.89f);//输出结果为45

       char c = 'a';
       int i1 = c + 1;//自动转换
       System.out.println(i1);//结果为98
       System.out.println((char) i1);//强制转换,结果为b
  }
}

容量:

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

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

(float>long,因为小数优先级大于整数)

注意点:

  1. 不能对布尔进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 再将高容量转换到低容量时,强制转换;反之将会自动转换

  4. 转换的时候可能存在内存溢出,或者精度问题

public class Demo04 {
   public static void main(String[] args) {
       //操作比较大的数时,需要注意溢出问题

       //JDK7新特性,数字之间可以用下划线分割,方便人数零
       int money = 10_0000_0000;
       int years = 20;
       int x = money*years;
       long x1 =money*(long) years;//在计算前将int转为long
       long x2 = money*years;//默认时int,转换之前已经存在问题,所以不能用long x = money*years,(在计算之后才转为long)
       System.out.println(x);//结果为-1474836480,发生了溢出
       System.out.println(x1);//结果为20000000000
       System.out.println(x2);//结果为-1474836480,没有解决问题
  }
}
 
posted @ 2022-04-28 19:32  唐靈影  阅读(62)  评论(0)    收藏  举报