kuangshenshuo-基础-数据类型扩展及类型转换

Java数据类型扩展

1. 整数扩展

  • 二进制:0b开头
  • 十进制
  • 八进制:0开头
  • 十六机制:0x开头 0~9 A~F
        int i = 10;
        int i2 = 010;   //八进制
        int i3 = 0x10;  //十六进制  0~9 A~F
        //int i3 = 0x11;

        System.out.println(i);  //10
        System.out.println(i2);  //8
        System.out.println(i3);  //16

2. 浮点数扩展

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

        float d1 = 23131312312313f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2); //true
  • 银行业务用 BigDecimal 数据工具类表示

3. 字符扩展

        //char c1 = 'a';
        char c1 = 'A';
        char c2 = '中';
        System.out.println(c1);  //A

        System.out.println((int)c1);  //65  

        System.out.println(c2);  //中

        System.out.println((int)c2); //20013

        char c3 = '\u0061';
        System.out.println(c3);  //a
  • 强制转换
  • 所有字符本质还是数字
  • 编码 Unicode 表:(97 = a; 65 = A) 2个字节 0~65536个字符 Excel 2 16 = 65536

类型转换

  • 低->高:byte, short, char -> int -> long -> float -> double

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算

  • 强制类型转换:高 -> 低

  • 自动类型转换:低 -> 高

  • 注意点:

    1. 不能对布尔值进行转换
    2. 不能把对象类型转换为不相干的类型
    3. 在把高容量转换到低容量的时候,强制转换
    4. 转换的时候可能存在内存溢出,或者精度问题
        int money = 10_0000_0000;   //JDK7新特性
        int years = 20;
        int total = money * years;
        System.out.println(total); // -1474836480, 计算的时候溢出了
        long total2 = money * years;
        System.out.println(total2); // -1474836480, 转换之前已经是int了
        long total3 = money * ((long)years); //先把一个数转换成Long
        System.out.println(total3); //20000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值