数据类型拓展及面试题讲解

整数拓展:进制

进制:二进制0b、十进制、八进制0、十六进制0x

        int i = 10;
        int i2 = 010;   //八进制0
        int i3 = 0x10;  //十六进制0x    0~9 A~F 16个

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);

浮点数拓展

面试题:银行业务如何表示?(提示:数值需准确)

//      float
//      double
        float f = 0.1f; //0.1
        double d = 1.0 / 10;  //0.1

        System.out.println(f == d);//false
        System.out.println(f);
        System.out.println(d);

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

通过以上结果看出,
f和d数值相等,本应输出true,却输出false。
d1和d2数值明显不相等,本应输出false,却输出true。
原因:浮点数是有限且离散的,有时会存在舍入误差,它只能算出大约数,即“接近但不等于”。
因此,
最好完全避免使用浮点数比较。
最好完全避免使用浮点数比较。
最好完全避免使用浮点数比较。
此题可使用BigDecimal,数学工具类,来比较。

字符类拓展

        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);//输出 a
        System.out.println((int)c1);//强制转换 输出 97
        System.out.println(c2);//输出 中
        System.out.println((int)c2);//强制转换 输出 20013

所有的字符本质还是数字
此现象涉及到 Unicode编码表 ,其中 97=a ,65=A。

        char c3 = '\u0061';
        System.out.println(c3);//输出 a

转义字符

        System.out.println("Hello\tWorld");
        System.out.println("Hello\nWorld");

\t:制表符
\n:换行
更多转义字符可自行百度。



        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);//false

        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc == sd);//true

sa和sb为新开辟的内存空间,存放的位置不同,比较的是内存地址,因此输出false。
sc和sd为字符串常量,共同指向“hello world”,因此输出true。



        boolean flag  = true;
        if (flag == true){}
        if (flag){}
        //以上两个条件判断为相同意思,都是判断flag是否为真
        //Less is More!代码要精简易读
posted @ 2022-07-30 08:59  ZIK-J  阅读(37)  评论(0)    收藏  举报