JAVA初阶问题浅究

本文探讨了Java中浮点数运算的精度问题,如0.1和1/10的不等以及`==`运算的局限;同时揭示了字符串对象和基本类型强制转换可能导致的内存溢出和地址差异。通过实例讲解如何使用BigDecimal处理浮点数精度,并剖析了对象引用和内存分配的原理。
摘要由CSDN通过智能技术生成

JAVA初阶问题浅究

浮点小数银行问题

        float f=0.1f;
        double d=1/10;
        System.out.println(f==d);//false
        float f1=2999999999999f;
        float f3=f1+1;
        System.out.println(f3==f1);//true
  • float

  • double

  1. 有限

  2. 离散

  3. 舍入误差

  4. 大约

  5. 接近但不等于

解决方法:需要用到Big Decimal 数学工具类

对象引用地址不相等问题

        String s1=new String("侯");
        String s2=new String("侯");
        System.out.println(s1==s2);//false
        String s3="侯";
        String s4="侯";
        System.out.println(s3==s4);//true

new 的对象是再堆内存中新开辟的空间所引用的是地址,地址不同

强制转换中的内存溢出问题

        char a='a';
        int i=a+1;
        System.out.println(i);//98
        System.out.println((char) i);//b

强转->高到低 可能内存溢出或者精度问题

自转->低到高

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值