Java基础-包装类

181 阅读1分钟

一、8大包装类

  • byte---Byte
  • short---Short
  • int---Integer
  • long---Long
  • float---Float
  • double---Double
  • char---Character
  • boolean---Boolean

自学别人写好的类的4大要点

  1. 类所在的包
  2. 类的关系(继承、实现)
  3. 类中的常用方法
  4. 方法的调用方式(new对象调用,还是静态方式调用)

举例:Integer常用方法

  • new Integer(123) 构造方法
  • Integer.parseInt(String s) 将字符串参数解析为带符号的十进制整数。
  • intValue() 将 Integer的值作为 int 。

二、名考题

2.1

Integer i1 = 10;
Integer i2 = 10;
Integer i3 = new Integer(10);
Integer i4 = new Integer(10);

System.out.println(i1 == i2); //true
System.out.println(i1 == i3); //false
System.out.println(i3 == i4); //false
System.out.println(i1.equals(i2));  //true
System.out.println(i1.equals(i3));  //true
System.out.println(i3.equals(i4));  //true

解析

  1. 对象在内存中的关系
    对象在内存中的关系图
  2. == 与equals()的区别
    • ==可以比较基本类型,也可以比较引用类型 如果比较基本类型,比较的是变量存储的值 如果比较引用类型,比较的是变量存储的引用地址(其实也是值)
    • equals()是Object类中继承过来的方法,每一个引用类型都可以调用 默认继承的equals方法与==一致,如果想要改变比较规则,需要重写方法。

2.2

Integer i1 = 1000;
Integer i2 = 1000;
Integer i3 = new Integer(1000);
Integer i4 = new Integer(1000);

System.out.println(i1 == i2); //false
System.out.println(i1 == i3); //false
System.out.println(i3 == i4); //false
System.out.println(i1.equals(i2));  //true
System.out.println(i1.equals(i3));  //true
System.out.println(i3.equals(i4));  //true
  • 常量池

Integer类中有个IntegerCache的内部类,IntegerCache中有个Integer数组,保存了-128到127的数字,如果对象在这范围之类,则直接取值;如果不在,则会在堆内存新建对象。