基本类型包装类

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

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

Integer包装类

Integer类的构造方法

方法名说明
Integer(int value)根据int值创建Integer对象(过时)
Integer(String s)根据String值创建Integer对象(过时)
static Integer valueOf(int i)返回表示指定int值的Integer实例
static Integer valueOf(String s)返回一个保存指定值Integer对象String

注:Integer类的valueOf方法是静态方法,可直接通过Integer.valueOf()调用,其返回值应该是一个对象

public class Test {
    public static void main(String[] args) {
        Integer i1 = Integer.valueOf(100);
        Integer i2 = Integer.valueOf("100");//这里的字符串参数只能是由int型数据构成的字符串参数
        //Integer i2 = Integer.valueOf("abc");//NumberFormatException异常
        System.out.println(i1);
        System.out.println(i2);
    }

int和String之间的相互转换

  1. int转换为String

static String valueOf(int i):返回int参数的字符串表现形式,该方法是String类中的方法

public class Test {
    public static void main(String[] args) {
        //int -> String
        int num = 100;
        //方式一:
        String s1 = "" + num;
        System.out.println(s1);//这里的s1为字符串
        //方式二(主要)
        String s2 = String.valueOf(num);//使用String valueOf静态方法转成字符串类型
        System.out.println(s2);
    }
}

  1. String转换为int

static int parsenInt(String s):将字符串解析为int类型,该方法是Integer类中方法

parse英文释义:语法分析

public class Test2 {
    public static void main(String[] args) {
        //Sting -> Integer -> int
        String s = "100";
        //方式一
        Integer i1 = Integer.valueOf(s);//先把String转换成Integer类型对象i1
        int x = i1.intValue();//使用对象i1调用intValue方法
        System.out.println(x);//此时x为int类型
        //方式二(主要)
        int y = Integer.parseInt(s);//调用parseInt静态方法
        System.out.println(y);
    }
}

案例:对字符串中数据进行排序

需求:有一个字符串:"91 27 46 38 50" 对其数据进行排序,并输出字符串

  1. 使用String类中split方法对字符串进行分割,其返回值是一个字符串数组

  2. 定义一个int型数组,使用Integer类中parseInt方法把字符串数组转成int型数组

  3. 使用StringBuilder类中append方法对int型数组中元素进行拼接,得到一个字符串 append英文释义:追加

public class Test {
    public static void main(String[] args) {
        String s1 = "91 27 46 38 50";
        String[] strArray = s1.split(" ");//以" "作为分割符,对s1进行分割
      
        int[] arr = new int[strArray.length];
        for (int i = 0; i < strArray.length; i++) {
            arr[i] = Integer.parseInt(strArray[i]); //数据类型转换 Sring转int
        }
      
        Arrays.sort(arr); //数组排序
      
        StringBuilder s2 = new StringBuilder(); //使用StringBuilder构建空的字符串
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1)//最后一个数时
                s2.append(arr[i]);
            else {
                s2.append(arr[i]);
                s2.append(" ");
            }
          	//toString方法以字符串类型返回StringBuilder中的字符串
        }
        String result = s2.toString();
        System.out.println(result);
    }
}

自动装箱和拆箱

装箱:基本数据类型转换为对应的包装数据类型

拆箱:反之

public class Test {
    public static void main(String[] args) {
        int i = 100;
        Integer ii = Integer.valueOf(i);//装箱
        i = ii.intValue();//拆箱

        Integer iii = 100;//自动装箱
        i = iii;//自动拆箱
    }
}

注:如果对包装类类型数据进行操作,最好先进行判断是否为null

只要是对象,在使用前就必须进行不为null的判断


自动装箱(拆箱)在jdk5之后的版本就可以实现了。其实联想到String类就能明白。String类不是基本数据类型,但是他的操作方式和基本数据类型又很相似,这里就应该是系统对String类操作的一个简化。