zoukankan      html  css  js  c++  java
  • Java基础003 --- 原始数据类型

    基本数据类型

    boolean、byte、char、short、int、long、float、double及其包装类型Boolean、Byte、Character、Short、Integer、Long、Float、Double

    整形包装类型比较

    Integer比较时,取值范围在-128~127时,使用==能够比较出结果(虽然不建议);但是超过了这个范围,使用==比较就不能正确比较了;

    原因:范围在-128~127时,Integer对象会从内部类IntegerCache中获取,超过范围会从Heap中获取;因为对于对象来说比较时比较的是地址;

    类似的包装类型及从cache取值范围如下:

    Character Short Integer Long
    0~127 -128~127 -128~127 -128~127

     

    源码:

    System.out.println("==========================Character========================");
    Character character1 = 127;
    Character character2 = 127;
    Character character3 = 0;
    Character character4 = 0;
    Character character5 = 128;
    Character character6 = 128;
    System.out.println(character1 == character2);
    System.out.println(character3 == character4);
    System.out.println(character5 == character6);
    System.out.println(character5.equals(character6));
    
    System.out.println("==========================Short========================");
    System.out.println(Short.valueOf((short) -128) == Short.valueOf((short) -128));
    System.out.println(Short.valueOf((short) 127) == Short.valueOf((short) 127));
    System.out.println(Short.valueOf((short) 128) == Short.valueOf((short) 128));
    System.out.println(Short.valueOf((short) -129) == Short.valueOf((short) -129));
    Short short1 = -129;
    Short short2 = -129;
    System.out.println(short1.equals(short2));
    
    System.out.println("==========================Integer========================");
    System.out.println(Integer.valueOf(-128) == Integer.valueOf(-128));
    System.out.println(Integer.valueOf(127) == Integer.valueOf(127));
    System.out.println(Integer.valueOf(128) == Integer.valueOf(128));
    System.out.println(Integer.valueOf(-129) == Integer.valueOf(-129));
    Integer integer1 = -129;
    Integer integer2 = -129;
    System.out.println(integer1.equals(integer2));
    
    System.out.println("==========================Long========================");
    System.out.println(Long.valueOf(-128) == Long.valueOf(-128));
    System.out.println(Long.valueOf(127) == Long.valueOf(127));
    System.out.println(Long.valueOf(128) == Long.valueOf(128));
    System.out.println(Long.valueOf(-129) == Long.valueOf(-129));
    Long long1 = -129L;
    Long long2 = -129L;
    System.out.println(long1.equals(long2));

    运行结果:

    ==========================Character========================
    true
    true
    false
    true
    ==========================Short========================
    true
    true
    false
    false
    true
    ==========================Integer========================
    true
    true
    false
    false
    true
    ==========================Long========================
    true
    true
    false
    false
    true

    浮点类型

    float:精度为8位,超过8位丢弃;定义float变量时后面要指定f,例如:float f1 = 1.34f;

    double:精度为17位,超过17位丢弃;定义double时,可以不指定d

    源码:

    System.out.println("==========================Float========================");
    float f1 = 1.123456789f;
    System.out.println(f1);
    
    System.out.println("==========================Double========================");
    double d1 = 1.123456789012345678;
    System.out.println(d1);

    运行结果:

    ==========================Float========================
    1.1234568
    ==========================Double========================
    1.1234567890123457

    注:浮点数只能用于科学计算和商业计算,不适合数学运算;原因:计算机计算时转换为二进制,这个时候可能会失去精度导致计算结果偏差;

    个人理解:只要浮点数不进行运算,那么无影响;如果进行了运算,那么得到的值可能不是预期的

    浮点包装类比较

    不能用==或者.equals比较,可以使用compareTo比较大小,但是不能比较是否相等;可以考虑使用BigDecimal做比较

  • 相关阅读:
    mysql中的round函数的使用
    mysql中日期函数的处理,datediff()函数 与 timestampdiff()函数的区别 及使用。
    easyui datagrid 自定义editor
    好的产品 跟 好的 设计师 很类似
    music
    gd库复制图片做水印
    用gd库画矩形和椭圆
    默认安装wamp修改MySQL密码
    中文验证码
    验证码
  • 原文地址:https://www.cnblogs.com/sniffs/p/12744658.html
Copyright © 2011-2022 走看看