Java基本类型包装类(封装类)

缪金谷 126 0

Java基本类型包装类(封装类)

概述

包装类是可以让基本数据类型获取跟对象一样的属性和特征,行使对象的相关权益,每一种基本数据类型都有对应的包装类型,方便对基本类型进行操作。

基本类型与对应包装类

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

使用

包装类都在java.lang包下,不需要导包即可使用

JDK1.55版本以后,包装类实现了自动拆装箱:

装箱

把基本数据类型转换成包装类:

  1. 自动装箱,不用实例化,直接赋值。

    int i1 = 10;
    Integer i2 = i1;
  2. 手动装箱,实例化对象。

    int i1 = 10;
    Integer i2 = new Integer(i1);

拆箱

把包装类转换成基本数据类型:

  1. 自动拆箱,不调用包装类方法,直接赋值。

    Integer i1 = 2;
    int i2 = i1;
  2. 手动拆箱,调用包装类方法获取返回值。

    Integer i1 = 2;
    int i2 = i1.intValue();
    //格式为***Value() 如:byteValue();

常用方法

Integer i = 10
Integer.valueOf(123);//将数字转换成字符串
Integer.parseInt("123");//将字符串转换成数字
Integer.parseInt(String s, int radix);//其他进制转换为十进制
Integer.toBinaryString(123);//将数字转换成二进制
Integer.toOctalString(123);//将数字转换成八进制
Integer.toHexString(123);//将数字转换成十六进制
Integer.toString(int i, int radix); // 转换为任意进制

i.intValue();//获取对象的值
Integer.equals();//判断两个对象的值是否一致,重写的obj方法


笔试题目

程序一

public class Test {
   public static void main (String[] args){
       Integer i1 = 10;
       Integer i2 = 10;
       Integer i3 = new Integer(10);
       Integer i4 = new Integer(10);
       System.out.println(i1 == i2);
       System.out.println(i1 == i3);
       System.out.println(i3 == i4);
       System.out.println(i1.equals(i2));
       System.out.println(i1.equals(i3));
       System.out.println(i3.equals(i4));
   }
}

结果:

true
false
false
true
true
true

程序二

public class Test {
   public static void main (String[] args){
       Integer i1 = 1000;
       Integer i2 = 1000;
       Integer i3 = new Integer(1000);
       Integer i4 = new Integer(1000);
       System.out.println(i1 == i2);
       System.out.println(i1 == i3);
       System.out.println(i3 == i4);
       System.out.println(i1.equals(i2));
       System.out.println(i1.equals(i3));
       System.out.println(i3.equals(i4));
   }
}

结果:

false
false
false
true
true
true

解答:

1、判断==与equals()的区别

==可以比较基本数据类型,也可以比较引用数据类型(变量中存储的内容)

如果比较基本类型则比较的是变量中存储的值,引用类型则比较的变量中存储的地址引用

equals()是Object类中继承过来的方法,每一个引用类型都可以调用

默认继承的equals()方法比较与==一致,不过Integer中重写了此方法,所以在Integer中,此方法比较的是数值

2、Integer类在加载的静态空间大小

在Integer类在加载的时候,会有一个自己的静态空间,空间会立即加载Integer类型的数组,数组内存储256个Integer对象,值的范围是:-128-127

如果我们用的对象范围在静态数组范围内,则直接使用此静态区中的对象,否则,将会重新New一个对象

所以,10的范围是在静态区内,两个10使用的都是同一个静态元素,而1000不在此静态区内,分别创建了一个新的对象导致地址引用不相等



目录导航
  • Java基本类型包装类(封装类)
    • 概述
    • 基本类型与对应包装类
    • 使用
      • 装箱
      • 拆箱
      • 常用方法
    • 笔试题目
  • 发表评论 (已有0条评论)

    还木有评论哦,快来抢沙发吧~