类型转换

类型转换

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

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

  • 基本数据类型的大小排序

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

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

  • 类型转换的时候避免内存溢出的问题

  • 自动类型转换 : (运算过程中)低转高 注解1

  • 强制类型转换 :

    • 高转低 ----> (低)高 注解3

    • (运算过程中)高转低 -----> (高)低 运算符 低 注解2

    Demo02.java

    public class Demo02 {
        public static void main(String[] args) {
            long a=121212112123123123L;
            int b=123;
            short c=10;
            byte d=8;
    
            System.out.println(a+b+c+d);//结果为Long类型,输出结果为121212112123123264  注解1
            System.out.println(b+c+d);//结果为int类型,输出结果为141 注解1 
            System.out.println( (double)c+d);//强制类型转换,输出结果为18.0 注解2
            System.out.println((int)a);//结果为int类型,输出结果为361944499 注解3和注解4
        }
    }
    

    注解4 int类型范围最大可到361944499

  • 注意点:

    1. 不能对布尔值进行转换
    2. 不能把对象类型转换成不相干的类型
    3. 在把高容量转换到低容量的时候,强制转换
    4. 转换的时候可能存在内存溢出,或者精度的问题
    5. JDK7新特性,数字之间可以用下划线分割 注解5
    6. 计算大额数字的时候可以在运算里先把一个数转换为Long

    test.java

    public class test{
       public static void main(String[] args){
    int money=10_0000_0000; //注解5
    
    int years=20;
           
    int total=money*years;
    System.out.println(total);//计算的时候已经溢出了,输出结果为:-1474836480
    
    long total2=money*years;
    System.out.println(total);//默认是int,转换之前已经存在问题了,输出结果为:-1474836480
    
    long total3=money*((long)years);//先把一个数转换为long  输出结果20000000000
    System.out.println(total3);
        }
       }
    
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页