7.JavaSE之类型转换

类型转换:
由于Java是强类型语言,所以要进行运算的时候,需要用到类型转换。
图中优先级从低到高,小数优先级大于整数。
运算中,不同类型的数据需要转换为同一类型,然后进行运算。
强制类型转换:(类型)变量名 高--低
自动类型转换:不用写 低--高
 1 public class Demo04 {
 2     public static void main(String[] args) {
 3         int i = 128;
 4         byte b = (byte) i;//内存溢出,Byte范围-128~127
 5 
 6         //强制类型转换:(类型)变量名  高--低
 7         //自动类型转换:不用写        低--高
 8 
 9         double c = i;
10         System.out.println(i);//128
11         System.out.println(b);//-128   高到低
12         System.out.println(c);//128.0  低到高
13 
14         /*
15         注意点:
16         1.不能对布尔值进行转换
17         2.不能把对象类型转换为不相干的类型。例如不能把人变成猪,但是可以把一个男人变成一个女人
18         3.在把高容量转换为低容量的时候,强制转换,反之不用管。
19         4.转换的时候可能存在内存溢出(高-低),或者精度问题(小数,精度丢失问题)
20         */
21 
22         System.out.println((int) 23.7);   //23
23         System.out.println((int) -45.99f);//-45
24 
25         System.out.println("======================");
26         char d = 'a';
27         int e = d + 1;
28         System.out.println(e);       //98
29         System.out.println((char) e);//b
30 
31     }
32 }

注意:

public class Demo05 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用_分割,而且下划线不会被打印出来

        int money = 10_0000_0000;
        int years=20;
        System.out.println(money);//1000000000
        int total=money*years;
        long total2 =money*years;
        System.out.println(total);//-1474836480,计算的时候溢出了
        System.out.println(total2);//默认是int,计算完后默认是int数你转换成long没用,还是-1474836480怎么解决呢?

        long total3=money*((long)years);//在计算前转换,将一个数转换为long类型就可以了。
        System.out.println(total3);//20000000000

        //L  l 用L表示long类型,容易看成1。需要注意代码规范,从刚开始就抓起。
    }
}

猜你喜欢

转载自www.cnblogs.com/duanfu/p/12221930.html