美文网首页
数据类型的使用注意

数据类型的使用注意

作者: 咯噔ya | 来源:发表于2019-10-31 18:01 被阅读0次

易混淆点记录:

1.所有 整形包装类对象 之间\color{red}{值的比较},全部使用equals方法比较。
说明:对于Integer var = ?在-128 至127 范围内的赋值,Integer对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的Integer值可以直接用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑。推荐使用equals方法进行判断。

2.浮点数之间的等值判断,基本数据类型\color{red}{不能}== 来比较,包装数据类型\color{red}{不能}equals来判断。
说明:浮点数采用“尾数+阶码” 的编码方式,类似科学计数法的 “有效数字+指数”的表示方式,二进制无法精确标识大部分的十进制小数,
正例:

        float a = 1.0f - 0.9f;
        float b = 0.9f - 0.8f;
        float diff = 1e-6f;
        if (Math.abs(a - b) < diff) {
            System.out.println("true");
        }
        BigDecimal a = new BigDecimal("1.0");
        BigDecimal b = new BigDecimal("0.9");
        BigDecimal c = new BigDecimal("0.8");
        BigDecimal x = a.subtract(b);
        BigDecimal y = b.subtract(c);
        if (x.equals(y)) {
            System.out.println("true");
        }

3.为了防止精度缺失,禁止使用构造方法\color{red}{BigDecimal(double)}的方式把值转化为BigDecimal对象。
说明:BigDecimal(double) 存在精度损失风险,在精确计算或值比较从场景中可能会导致业务逻辑异常。
如:BigDecimal a=new BigDecimal(0.1f);实际存储值为:0.10000000149
正例:优先推荐入参为String 的构造方法,或者使用BigDecimal的valueOf方法,此方法内部其实执行了Double的toString,而Double的toString按Double的实际能表达的精度对尾数进行了截断。

BigDecimal recomment1 = new BigDecimal("0.1");
BigDecimal recomment2 = BigDecimal.valueOf(0.1);

4.注意Math.random()这个方法返回的是double类型,注意取值范围0<=x<1(能够取值到零,注意除0异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,直接使用Random对象的nextInt或者nextLong方法

        Random r = new Random();
        int a1 = r.nextInt();
        long a2 = r.nextLong();

相关文章

  • 数据类型的使用注意

    易混淆点记录: 1.所有 整形包装类对象 之间,全部使用equals方法比较。说明:对于Integer var =...

  • JNI类型签名和方法签名

    一、基本数据类型 二、引用数据类型 注意:1、引用数据类型则不能直接使用,需要根据JNI函数进行相应的转换后,才能...

  • Java基础02_变量_数据类型_类型转换_运算符

    主要内容 变量 Java数据类型 Java数据类型转换 运算符 学习目标 掌握变量的定义、初始化、使用及注意事项 ...

  • Schema与数据类型优化

    我们在定义表结构时或者在对表进行修改时,需要注意一些东西 数据类型 使用越大数据类型,则会使用更多的内存,所以在选...

  • 红宝书笔记-数据类型

    数据类型 使用typeof判断类型注意点 typeof可以用来判断数据类型,但是,对于复杂类型无能为力,比如 ty...

  • 一、基础类型

    基础类型 Typescript 支持与 Javascript几乎相同的数据类型,此外还提供枚举值使用,注意 :基本...

  • C++引用

    2.1 引用的基本使用 **作用: **给变量起别名 语法: 数据类型 &别名 = 原名 示例: 2.2 引用注意...

  • mysql日常使用

    大纲: 一. mysql 数据类型 注意点: char和varchar使用char长度不可变,varchar长度可...

  • Python基础知识(一)

    XSize的主页 (一)基础数据类型: 1.数据类型 2.字符串 使用str表示 ps:注意的一些问题-> 3.列...

  • Spark-sql中时间格式类型推导问题

    在使用Spark-sql开发过程中有时候没有注意数据类型,导致程序本身进行数据类型推导,使得任务执行能正常执行...

网友评论

      本文标题:数据类型的使用注意

      本文链接:https://www.haomeiwen.com/subject/dabtbctx.html