数据类型扩展

进制问题

//整数拓展:      进制      二进制0b     十进制     八进制0     十六进制0x

        int i = 10;
        int i2 = 010;  //八进制的10就是8
        int i3 = 0x10;  //十六进制0x的10就是16       0~9 A~F F是15

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

浮点数字长是有限的有范围的,因此是离散的,是舍入有误差的,因此输出的结果是不精确的,用“大约”、“接近但不等于来形容”

所以使用浮点数比较会出现异常,因此最好完全避免使用浮点数进行比较。银行业务算钱用大数类BigDecimal,不用浮点数表示。

//浮点数拓展     银行业务怎么表示? 算钱
        //  BigDecimal(大数类)     数学工具类
        //===============================================================
        //float
        //double
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较

        float f = 0.1f;  //0.1      有限  离散  舍入误差    大约  接近但不等于
        double d = 1.0/10;  //0.1

        System.out.println(f==d);  //判断f与d是否相等  结果为false

        float d1 = 46464646546461616516f;
        float d2 = d1 + 1;

        System.out.println(d1==d2);//结果为true

用char定义字符型,输出时加个int强制将值转换为整数型,输出结果为数字,因此所有的字符本质还是数字。char涉及到编码问题。Unicoude编码表可以编译任何语言,用\u可以把数字转义,但正常写就直接写我们熟知的字符就行。Unicoude编码表从U0000表示到UFFFF,范围为0-65536,当然现在不止了。Excel的长度就是二的十六次方——65536。同时还有很多转义字符。

//字符拓展
        //=====================================================
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);

        System.out.println((int)c1);  //强制类型转换

        System.out.println(c2);

        System.out.println((int)c2);  //强制类型转换

        //所有的字符本质还是数字
        //编码    Unicoude 占2字节 表:97 = a      0-65536  Excel   2  16  =   65536

        //U0000   UFFFF

        char c3 = '\u0061';		//Unicoude编码

        System.out.println(c3);  //输出结果是a

        //转义字符
        //  \t  制表符
        //  \n  换行
        //  ....

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

悬念:输出的东西是一样的但是sa和sb不相等,但是sc和sd相等。在学习面向对象后,从内存角度分析(第一个比较的是地址,第二个比较的是值)

String sa = new String(original:"hello world");

        String sb = new String(original:"hello world");

        System.out.println(sa==sb);  //false


        String sc = "hello world";
        
        String sd = "hello world";
        
        System.out.println(sc==sd);  //true
        //对象   从内存分析

if里默认是true

//布尔值扩展
        boolean flag = true;
        if (flag==true){}  //新手
        if (flag){}  //老手
        //Less is  More!   代码要精简易读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值