学习编程第5天

类型转换

由于java是强类型语言,所以要进行某些计算的时候,需要用到类型转换

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

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

计算中不同类型的数据要先转换为同一类,然后进行计算

强制转换

从高内存转换到低内存时要强制转换:(类型)变量名

自动转换

从低内存转换到好内存是可自动转换

        int i=12;
       byte b=(byte) i//强制转换
       
       int a=12;
       double c=a//自动转换

 

注意!!!

  1. 不能对布尔值进行转换

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

  3. 把高容量转换到低容量时,要强制转换

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

        int i=128;
       byte b=(byte) i;
       System.out.println(i);
       System.out.println(b);

结果分别是128、-128,因为byte最多只能到127,内存溢出了

 

        System.out.println((int) 23.7);
       System.out.println((int) -45.89f);

结果分别是23、-45,这就是精度问题

 

        char c='a';
       int d=c+1;
       System.out.println(d);
       System.out.println((char) d);

结果分别是98、b

 

操作比较大的数的时候,注意溢出问题

(JDK7新特性,数字之间可用下划线分割,下划线并不会被输出)

        int money=10_0000_0000;
       int yeat=20;
       int total=money*yeat;
       System.out.println(total);

结果是-1474836480,出现了溢出问题

 

错误操作:

        int money=10_0000_0000;
       int yeat=20;
       long total=money*yeat;
       System.out.println(total);

结果还是-1474836480,因为是先用int计算完之后再把结果转换为long

 

正确的操作:

        int money1=10_0000_0000;
       int year1=20;
       long total1=money1*((long)year1);//先把一个数转换为long
       System.out.println(total1);

 

posted @ 2021-08-03 10:01  长椎  阅读(26)  评论(0)    收藏  举报