进制与强制转换

进制


        //进制    二0b     十       八0      十六0x

        int i1 = 010;       //八进制
        int i2 = 0b100;     //二进制
        int i3 = 0x100;     //十六进制

        System.out.println(i1);     //8
        System.out.println(i2);     //4
        System.out.println(i3);     //256

浮点型错误

        float f = 0.1f;
        double d = 1.0/10;
        System.out.println(f==d);       //false

        float d1 = 46546321324656f;
        float d2 = d1+1;
        System.out.println(d1==d2);     //true

        //比较浮点数不用float
        //用 BigDecimal  数学工具类

强制转换和转义字符

        char c1 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//20013
        //  A==65  a==97

        char c2 = '\u0061';
        System.out.println(c2);     //a  ‘\’u表示转义十六进制字符

        int c3 = 0x0061;
        System.out.println(c3);     //97  0x表示十六进制整数

        //转义字符
        // \t  制表符
        System.out.println("aaaa\tbbbb\n");   //aaaa	bbbb
    int i = 128;
    byte b = (byte) i;//内存溢出

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

强制转换


    System.out.println(i);//128
    System.out.println(b);//-128

    //自动转换  低-->高

    /*
    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 d = c+1;
    System.out.println(d);
    System.out.println((char) d);

    System.out.println("================");

    //数较大时注意溢出  数字之间可以用下划线分割
    int money = 10_0000_0000;
    int years = 20;
    int total = money*years; //-1474836480  溢出
    long total2 = money*years;//溢出  在转换之前就已经溢出
    long total3 = (long) money*years;
    System.out.println(total3);
posted @ 2024-03-01 16:11  X~ming  阅读(32)  评论(0)    收藏  举报