关于数据类型的扩展

1、整数扩展

二进制0b开头 八进制0开头 十进制默认 十六进制0x开头

public class Demo1 {
    public static void main(String[] args) {
    
        int i1 = 0b10;
        int i2 = 010;
        int i3 = 10;
        int i4 = 0x10;

        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}

2、浮点数扩展

首先看一个问题:银行数据如何表示?银行数据是需要精确的存储的,而且还带有小数,所以可以用浮点型表示。但是看看下面这个例子:

public class Demo2 {
    public static void main(String[] args) {

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

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

        float f1 = 21341242424f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);
    }
}

上面代码运行结果:
浮点型扩展
可以看到0.1不等于0.1,一个浮点数加1和自己相等,这是反常规的!这里就涉及到精度损失问题了,当使用浮点数存储数据时,数据可能无限,而存储空间是有限的,所以会有舍入误差,解决方法可以是:使用Java自带的BigDecimal类。

3、字符型扩展

编码方式:Unicode

public class Demo3 {
    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);
        System.out.println(c2);
        System.out.println((int)c2);   // 使用Unicode编码
    }
}

上面代码运行结果:
字符扩展

4、字符串扩展(类)

看下面一段代码

public class Demo5 {
    public static void main(String[] args) {

        String s1 = new String("Hello World!");
        String s2 = new String("Hello World!");

        String s3 = "Hello World!";
        String s4 = "Hello World!";

        System.out.println(s1 == s2);
        System.out.println(s3 == s4);
    }
}

上面代码运行结果:
字符串扩展
为什么两种不同的实例化对象得到不同的结果?原来在用new关键字创建对象的时候是在内存中找到一块空间存储Hello World!,然后将这块地址的首地址返回给s1和s2(当然java里不用地址这个概念,是引用),而下面这种赋值就是将常量池里的Hello World!的首地址赋给s3和s4,所以s3==s4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值