JSE学习笔记---关于数据类型那点事儿

本文详细介绍了Java中三个容易被忽视的数据类型特性和用法:二进制表示、浮点数精度问题及char类型应用。包括如何在Java7及以上版本中正确表示二进制数,浮点数在金融计算中的局限性以及使用BigDecimal类解决精度问题,还有char类型用于表示单个字符及其Unicode编码。通过示例代码演示了每种类型的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文总结了三个不容易被注意到的三个数据类型的特殊用法,

      1.  二进制
        java7以后,可以用前缀”0b“表示二进制数,也可以在数字之间,为数字加下划线分割,方便阅读。
        例如:
            0b1110_1010_0101=0b111010100101

      2. 浮点数
            浮点数不适用于金融等精确计算中,原因是浮点值采用二进制系统表示,而二进制系统无法精确表示1/10,
            正如十进制无法精确表示1/3一样。
            例如:2.0-1.1=0.9,下面却输出0.8999999999999999
            所以应该使用BigDecimal类,它的subtract方法表示减法运算。

      3.char类型
           char类型用于表示单个字符,通常用来表示字符常量。例如'A'是编码为65对应的字符常量。
           Unicode编码单元可以表示为16进制的值,其范围为:\u0000 ~ \uffff。
   

            详细注释与完整代码如下(JDK1.8运行测试通过):

<strong><span style="font-size:18px;">public class JSETest
{
    public static void main(String\u005B\u005D args)
    {
        /*1.
        二进制的表示
        java7以后,可以用前缀”0b“表示二进制数,也可以在数字之间,为数字加下划线分割,方便阅读。
        例如:
        111110101(二进制)=501(十进制)
        下面直接调用输出语句,会把括号内的数字转为十进制整型输出
        */
        System.out.println(11110101);             //输出:  111110101
        System.out.println(0b1110_1010_0101);    //输出:   3749
        System.out.println(0b1110_1010_0101);  //输出:       3749
        
        /*  2.浮点数
            浮点数不适用于金融等精确计算中,原因是浮点值采用二进制系统表示,而二进制系统无法精确表示1/10,
            正如十进制无法精确表示1/3一样。
            例如:2.0-1.1=0.9,下面却输出0.8999999999999999
            所以应该使用BigDecimal类,它的subtract方法表示减法运算
        */
        System.out.println(2.0-1.1);    //输出:    0.8999999999999999
        /*BigDecimal的valueOf方法API:
          Translates a double into a BigDecimal,
          using the double's canonical string representation provided by the Double.toString(double) method. */
         java.math.BigDecimal bd1=java.math.BigDecimal.valueOf(2.0);
         java.math.BigDecimal bd2=java.math.BigDecimal.valueOf(1.1);
          System.out.println(bd1.subtract(bd2)); //输出:    0.9
        /*3.char类型
           char类型用于表示单个字符,通常用来表示字符常量。例如'A'是编码为65对应的字符常量。
           Unicode编码单元可以表示为16进制的值,其范围为:\u0000 ~ \uffff。
                例如main方法参数里的[和],可以用\u005B和\u005D表示。
        */
        System.out.println(\u0022 这里双引号里的内容哦 \u0022); //转义序列:\"  双引号  Unicode值:\u0022
    }

}
</span></strong>




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值