类型转换

类型转换

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

    低-----------------------------------------------------------------------------》高

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

    容量占比从低到高

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

    public class Conversion {
        public static void main(String[] args) {
            int i =128;
            byte b =(byte) 128;//强制转换  (类型)变量名  高到低需要强制转换
            //double b = 128; //自动转换   由低到高转换不需要强制 输入对应的变量类型加名字即可自动转换
            //double i =128;
            //int b =128;
            //这是个错误代码,如果要运算不同类型的数,则必须要将类型转换为一样才能运算。
            System.out.println(i);
            System.out.println(b);
            //得出结果是i = 128 b = -128  为什么会出现这样的结果呢?因为byte是JAVA中最小的整数类型,对着Byte按CTRL键可以看到byte最大只能表示
            //最大只能表示127 出现-128的原因是内存溢出。
            //---------------------------------------------------------------------------------------------------------------------
             /*对于强制转换和自动转换的注意点:
             1.不能对布尔值进行转换
             2.不能把对象类型转换为不相干的类型
             3.把大容量转换到低容量的时候需要强制转换
             4.转换的时候可能遇到内存溢出,或者精度问题
              */
            System.out.println("---------------------------------------------------------------------------------------------");
            System.out.println((int) 23.7);
            System.out.println((int) 45.89f);
            //得出的结果是 23 和 45  说明数据类型转换会存在精度问题
            //以上是精度问题的举例
            System.out.println("-----------------------------------------------------------------------------------------------");
            char c='a';
            int d=c+1;
            System.out.println(d);
            System.out.println((char)(d));
            //类型转换举例
            //-----------------------------------------------------------------------------------------------------------------------
            int money = 1000_000_000;//数字之前可以用下划线分割,更好区分数字
            int year = 20;
            int total = money*year;
            long total2 =money*year;
            long total3 =money*((long)(year));
            System.out.println(total);//得出的结果是-1474836480 应该是2000000000  20亿   所以是计算的时候溢出了
            System.out.println(total2);//得出的结果同样是-1474836480 由于是默认int 所以转换之前已经出现问题了
            System.out.println(total3);//结果是200亿,
            
    
posted on 2021-07-31 16:43  云朵落满枝丫  阅读(261)  评论(0编辑  收藏  举报