包装类

SOBER大约 2 分钟

包装类

包装类的分类

WrapperType.java

  • 针对八种基本数据类型相应的引用类型一包装类
  • 有了类的特点,就可以调用类中的方法
包装类
包装类

包装类和基本数据的转换

演示

Integer01.java

包装类 和 基本数据类型的相互转换,这里以 intInteger 演示

  1. jdk5 前的手动装箱和拆箱方式,装箱: 基本类型 --> 包装类型,反之,拆箱
  2. jdk5 以后(含jdk5)的自动装箱和拆箱方式
  3. 自动装箱底层调用的是 valueOf 方法,比如 Integer.valueOf()
  4. 其它包装类的用法类似,
public class Integer01 {
    public static void main(String[] args) {
        /**
         * jdk5前是手动装箱和拆箱
         * 演示 int <---> Integer 的装箱和拆箱
         */

        // 手动装箱 int ---> Integer
        int n1 = 100;
        Integer integer = new Integer(n1);
        //或
        Integer integer1 = Integer.valueOf(n1);

        // 手动拆箱 int <--- Integer
        int i = integer.intValue();

        /**
         * jdk5 后是自动装箱和拆箱
         * 演示 int <---> Integer 的装箱和拆箱
         */

        // 自动装箱 int ---> Integer
        int n2 = 100;
        Integer integer2 = n2;

        // 自动拆箱 int <--- Integer
        int i2 = integer;
    }

测试题

WrapperExercise01.java

  1. 下面的代码是否正?为什么?

       Double d = 100d;
       Float f = 1.5f;
    
  2. 如下两个题目输出结果相同吗?各是什么?

    Object obj1 = true? new Integer(1) : new Double(2.0);
    System.out.println(obj1); // 输出什么?
    
    Object obj2;
    if(true)
     obj2 = new Integer(1);
    else
     obj2 = new Double(2.0);
    System.out.println(obj2); // 输出什么 ?
    

包装类型和 String 类型的相互转换

WrapperVsString.java

案例演示, 以 Integer 和 String 转换为例,其它类似

  • 包装类型 --> String 类型

    Integer i = 10;
    // 方式1:
    String s1 = i.toString();
    // 方式2:
    String s2 = String.valueOf(i);
    // 方式3:
    String s3 = i + "";
    System.out.println(s3);
    
  • String类 --> 包装类

    String i2 = "十";
     // 方式1:
     Integer j = new Integer(i2);
     // 方式2:
     Integer j2 = Integer.valueOf(i2);
    

Integer 类和 Character 类的常用方法

  • 返回最小值 Integer.MIN_VALUE
  • 返回最大值 Integer.MAX_VALUE
  • 判断是不是数字 Character.isDigit('a')
  • 判断是不是字母 Character.isLetter('a')
  • 判断是不是大写 Character.isUpperCase('a')
  • 判断是不是小写 Character.isLowerCase('a')
  • 判断是不是空格 Character.isWhitespace('a')
  • 转成大写 Character.toUpperCase('a')
  • 转成小写 Character.toLowerCase('A')

包装类面试题

WrapperExercise02.java

看看下面代码,输出什么结果?为什么?

public class WrapperExercise02 {
    public static void main(String[] args) {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j); // false

        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n); // true

        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y); // false

    }
}