类型转换

类型转换

  • java是强类型语言 ,所以要进行运算时要进行转换;

    低--------------------------------------------------->高(指容量)

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

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

    • 这里的从低到高,是指容量

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算;

  • public class Demo03 {
        public static void main(String[] args){
            int i=128;
            //Byte
            byte b =(byte)i;//内存溢出  byte -128~127
            //这里是  由int-->byte
    
            //强制转换 (类型)变量名   高——>低
            //自动转换   低——>高
            System.out.println(i);
            System.out.println(b);
            System.out.println("========================");
    
            //低--------------------------------------------------->高(指容量)
    
            //byte,short,char-->int-->long-->float-->double
    
    
    
            int m=128;
            //Byte
            double  n =(double) m;
            //这里是  由int-->double
    
            System.out.println(m);
            System.out.println(n);
    
            /*
            att:
            1.不能对布尔值进行转换;
            2.不能把对象类型转换为不相干的类型;
            3.在把高容量转化为低容量的时候,强制转换,反之自动转转换;
            4.转换的时候可能存在内存溢出和精度问题!(下面的例子)
    
             */
    
            System.out.println("========================");
            System.out.println((int)23.7);
            System.out.println((int)-45.89f);//精度问题!
    
    
            System.out.println("========================");
            char c='a';//97
            int d=c+1;
            System.out.println(d);
            System.out.println((char)d);//把 d转换为数字
    
    
    
            //操作数比较大的时候注意溢出问题
            //JDK7新特性,数字之间可以使用下划线分割,且不会被输出
            int money =10_0000_0000;
            int years = 20 ;
            int total = money*years ;//-1474836480  计算时溢出   虽然是从低到高自动转换,但是因为这里溢出所以要强制转换
            long total2=money*years ;//默认是int,转换之前已经存在问题了?
            long total3=(long)money*years ;//先把一个数转化为long
            //long total3=money*(long)years ;??为啥也可以  是因为优先级么  int*long=long 么?
    
    
            System.out.println(total);
            System.out.println(total2);
            System.out.println(total3);
    
        }
    }
    
posted @ 2021-09-22 22:42  Yotila  阅读(22)  评论(0)    收藏  举报