Java基础03:类型转换

类型转换

image

  • 由于Java是强类型语言,所以进行有些运算时,需要类型转换

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

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

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

  • 强制类型转换 (类型)变量名 高-->低

  • 自动转换 低-->高

注意点:

  1. 不能对布尔值进行转
  2. 不能把对象类型转换为不相干的类型(男-->女 人-->猪
  3. 在把高容量变为低容量时强制转换,反之不用动
  4. 转换时可能出现内存溢出,或精度问题
  • 内存溢出,进度丢失,强行转换

    public class Demo04 {
        public static void main(String[] args) {
            int i=128;
            byte b=(byte) i;//内存溢出 byte:-128~127
            double c=i;
    
            System.out.println(i);  //输出128
            System.out.println(b);  //输出-128   内存溢出 byte:-128~127
            System.out.println(c);  //输出128.0
    
            System.out.println("=====================================");
            System.out.println((int) 23.7);   //输出23   精度丢失
            System.out.println((int) -45.89f);//输出-45  精度丢失
    
            System.out.println("=====================================");
            char d='a';
            int e=d+1;
            System.out.println(e);       //输出98
            System.out.println((char) e);//输出b
        }
    }
    
  • 关于大型数字之间的乘法

    public class Demo05 {
        public static void main(String[] args) {
            //操作比较大的数的时候,注意溢出问题
            //JDK7的新特性,数字之间可以用下划线分割,下划线不会被输出
            int money=10_0000_0000;
            int years=20;
            int total=money*years;
            System.out.println(total);//输出-1474836480,计算时溢出
            long total2=money*years;//先计算int*int=int,在转换成long,转换前已经出问题了
            System.out.println(total2);//输出-1474836480,计算时溢出
    
            long total3=money*((long)years);//先把一个数转换成long
            System.out.println(total3);//输出20000000000
    
            //L和l,尽量写成大写的L,小写的可能会被看成1
        }
    }
    
posted @ 2021-08-30 19:48  奶酥  阅读(36)  评论(0编辑  收藏  举报