Java修真界(斗之气三段)

这篇博客探讨了Java中的整数扩展,包括不同进制的表示方法,以及浮点数在表示精度上的问题。此外,还介绍了字符的Unicode编码和转义字符的使用。最后,文章提到了字符串的比较,强调了基本类型与引用类型之间的差异,并指出在进行浮点数比较时的潜在误差。
摘要由CSDN通过智能技术生成

整数扩展

package DAY01;

public class demo03 {
    public static void main(String[] args) {
        //整数扩展   进制  二进制 ob  十进制  八进制 0  十六进制 0x

        int i = 10;  //十进制
        int i2 = 010;  //八进制
        int i3 = 0x10;  //十六进制  0~9 A~F F代表16
        int i4 = 0b10; //二进制

        System.out.println(i);
        System.out.println(i2);//输出i2
        System.out.println(i3);
        System.out.println(i4);
        System.out.println("==================");

    }

在这里插入图片描述

输出结果如上图所示

浮点数扩展

public class demo03 {
    public static void main(String[] args) {
        //浮点数扩展? 银行业务怎么表示?【钱】
        // 【float】【double】

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

        System.out.println(f==d); //表示f和d是否一样?true or false?【False】
        System.out.println(f);
        System.out.println(d);

    }
}

在这里插入图片描述

输出结果如上图所示

思考:为啥 f 和 d 都表示0.1,但是,为什么 f 和 d 不相等呢?

public class demo03 {
    public static void main(String[] args) {
        //浮点数扩展? 银行业务怎么表示?【钱】
        // 【float】
        // 【double】

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

        System.out.println(f==d); //表示f和d是否一样?true or false?【False】

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

        System.out.println(d1==d2);//输出为【True】
        /*
        可以明显的看到d1是不等于d2的,但是程序居然认为d1==d2.
        因为float浮点数,是有限的、离散的,舍入误差的、大约,接近但不等于
        最好避免完全使用浮点数进行比较
        可以用 Big Decimal[类]
        */
    }
}

字符扩展

所有的字符本质上还是数字

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

        System.out.println(c1);
        System.out.println((int)c1); //强制转换
        System.out.println(c2);
        System.out.println((int)c2);  //强制转换
        //强制转换:可以把字符转换成数字
        //所有的字符本质还是数字
        //编码 Unicode表:(97=a  65=A) 2字节 2^16==65536
        //该表是从:U0000--UFFFF

        char c3 = '\u0061';

        System.out.println(c3); //输出为【a】  因为:6x16+1=97
        
        //转义字符
        // 【\t】 制表符 类似于空格
        // 【\n】 换行
        System.out.println("Hello\nWorld");

输出结果:

在这里插入图片描述

        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不相等,而sc和sd是一样的,相等的?

答:第一个值一样但是储存地址不一样【比较的是地址值】,第二个比较的是内容。

【==】:如果比较的对象是基本数据类型,则比较的是数值是否一致;如果比较的是引用数据类型,则比较的是对象的地址是否一致。

整个代码

public class demo03 {
    public static void main(String[] args) {
        //整数扩展   进制  二进制 ob  十进制  八进制 0  十六进制 0x

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

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
        System.out.println("==================");

        //浮点数扩展? 银行业务怎么表示?【钱】
        // 【float】
        // 【double】

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

        System.out.println(f==d); //表示f和d是否一样?true or false?【False】

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

        System.out.println(d1==d2);//【True】
        /*
        可以明显的看到d1是不等于d2的,但是程序居然认为d1==d2.
        因为float浮点数,是有限的、离散的,舍入误差的、大约,接近但不等于
        最好避免完全使用浮点数进行比较
        可以用 Big Decimal[类]
        */

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

        System.out.println(c1);
        System.out.println((int)c1); //强制转换
        System.out.println(c2);
        System.out.println((int)c2);  //强制转换
        //强制转换:可以把字符转换成数字
        //所有的字符本质还是数字
        //编码 Unicode表:(97=a  65=A) 2字节 2^16==65536
        //该表是从:U0000--UFFFF

        char c3 = '\u0061';

        System.out.println(c3); //输出为【a】  因为:6x16+1=97

        //转义字符
        // 【\t】 制表符 类似于空格
        // 【\n】 换行
        System.out.println("Hello\nWorld");

        System.out.println("=======================");
        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】
        //对象 从内存分析

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

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值