欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基本类型和包装类

程序员文章站 2022-06-14 16:53:43
...
  • 基本类型。

    byte、short、int、long、float、double、char和boolean。

  • 包装类。

    Byte、Short、Integer、Long、Float、Double、Character和Boolean。

  • 基本类型所占字节数及默认值。

    基本类型 所占字节 取值范围 默认值
    byte 1 27-2^{7}~2712^{7}-1 0
    short 2 215-2^{15}~21512^{15}-1 0
    int 4 231-2^{31}~23112^{31}-1 0
    long 8 263-2^{63}~26312^{63}-1 0
    float 4 3.402823e+38 ~ 1.401298e-45 0.0F
    double 8 1.797693e+308~ 4.9000000e-324 0.0D
    char 2 ‘’
    boolean 1 0/1 false
  • 包装类默认值为null。

  • 基本类型==比较的是值。

    byte a = 1;
    byte b = 1;
    System.out.println(a == b); // true
    
  • 包装类==比较的是地址,两个new出来的包装类,会在堆中生成一个对象,==操作返回false。

    Integer a = new Integer(1);
    Integer b = new Integer(1);
    System.out.println(a == b); // false
    
  • 一个new出来的包装类和一个非new出来的包装类进行==比较,两者地址不同,返回false。

    Integer a = 1;
    Integer b = new Integer(1);
    
  • 包装类除了Float和Double,其他的类型的值保存在常量池中,Integer在常量池中缓存的值的范围是[-128,127],超过这个范围会重新new一个对象,放在堆中。

    Character a = 'a';
    Character b = 'a';
    System.out.println(a == b); // true
    
    Float c = 0.1F;
    Float d = 0.1F;
    System.out.println(c == d); // false
    
    Integer e = 1;
    Integer f = 1;
    System.out.println(e == f); // true
    
    Integer g = 128;
    Integer h = 128;
    System.out.println(g == h); // false
    
  • 基本类型和对应的包装类进行比较,包装类会自动拆箱,==比较两者的值。

    int a = 1;
    Integer b = 1;
    System.out.println(a == b); // true
    
  • 不同的基本类型进行==比较,会发生隐式类型转换,比较两者的值。

    int a = 1;
    byte b = 1;
    System.out.println(a == b); // true,byte会转为int
    
  • 不同的包装类型不能进行==比较,会发生编译错误。

    Integer a = 1;
    Byte b = 1;
    System.out.println(a == b); // error,不可比较的类型:java.lang.Integer和java.lang.Byte