强类型转换

强类型转换

java是强类型语言所以在运算的时候要用到类型转换

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

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

小数的优先级一定大于整数

运算时,不同类型的数据先转换成同一种类型,然后进行运算

public class Demo04 {
    public static void main(String[] args) {
        //强制转换   (类型)变量名  高-->低
        int i=128;
        byte b=(byte)i;  //内存溢出

        //自动转换    低-->高
        double d=i;
        System.out.println(i);
        System.out.println(b);
        System.out.println(d);

        /*
        注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把大容量转换为低容量时,强制转换;反之自动转换。
        4.转换过程中可能存在内存溢出问题或者精度问题
         */
        System.out.println("==================================================");
        //精度问题
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f );//-45





        System.out.println("==================================================");
        char c='a';
        int e=c+1;
        System.out.println(e);
        System.out.println((char)e);
    }
}

溢出问题
public class Demo05 {
    public static void main(String[] args) {
        //操作比较大的时候要注意溢出问题
        //JDK7新特性数字之间可以用下划线分割
        int money=10_0000_0000;
        //System.out.println(money);
        int year=20;
        int total=money*year;//-1474836480  计算时溢出了
        long total2=money*year;//-1474836480  默认是int 转换之前就已经出现问题了
        System.out.println(total);
        System.out.println(total2);
        long total3=money*((long)year);//先把一个数转换为long
        System.out.println(total3);//20000000000
    }
}
上一篇:【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(特殊的技巧)


下一篇:[BZOJ2683][BZOJ4066]简单题