基本数据类型包装类

1、为了方便操作基本数据类型值,将其封装成了对象,在对象中定义属性和行为,丰富了该数据的操作。

数据类型 包装类
byte Byte
short Short
int Integer
long Long
flot Float
double Double
char Character
boolean Boolean

2、基本数据类型和字符串之间的转换

基本类型–>字符串

(1)、基本类型数值+””

(2)、用String类中的静态方法valueOf(基本类型数值)

字符串–>基本类型

(1)、静态方法 parseInt, parseLong, parseBoolean。。。。

8种基本数据类型中,只有Character没有parse的用法。

(2)、如果字符串被Integer进行了对象的封装。可以使用别一个非静态方法intValue()将一个Integer对象转成基本数据类型值。

Integer i = new Integer("123");
System.out.println(i.intValue());

3、进制转换

十进制–>其它进制

//转二进制
System.out.println(Integer.toBinaryString(60));
System.out.println(Integer.toString(60,2));

//转八进制
System.out.println(Integer.toOctalString(60));
System.out.println(Integer.toString(60,8));

//转十六进制
System.out.println(Integer.toHexString(60));
System.out.println(Integer.toString(60,16));

其它进制–>十进制 parseInt(“string”, radix)

//二进制转十进制
System.out.println(Integer.parseInt("110",2));

//八进制转十进制
System.out.println(Integer.parseInt("74",8));

//十六进制转十进制
System.out.println(Integer.parseInt("3c",16));

4、自动装箱拆箱

Integer i = new Integer(4);
jdk1.4以后简写为Integer i = 4; //自动装箱

i = i + 6;
是i = new Integer(i.intValue()+6)的简写,自动拆箱。

5、小结

Integer a = new Integer(127);
Integer b = new Integer(127);

System.out.println(a==b);//fasle,对象比较地址
System.out.println(a.equals(b));//true,比较内容

Integer x = 129;
Integer y = 129;

System.out.println(x==y);//fasle
System.out.println(x.equals(y));//true

Integer x = 127;
Integer y = 127;

System.out.println(x==y);//true
System.out.println(x.equals(y));//true

x,y都为127时,x==y为true,都为129时,x==y为false

是因为jdk1.5以后,自动装箱时,如果装箱的在一个字节空间内(-128~127),那么该数据会被共享,不会重新开辟空间,因此都为127时,比较x==y时,实际上是一个地址。

6、练习

对字符串中的数值排序

import java.util.Arrays;

public class WrapperTest {
    private static final String SPACE_SEPARATOR = " ";

    public static void main(String[] args) {
        String numStr = "20 83 32     11 -7 50";
        System.out.println(numStr);
        numStr = sortStringNumber(numStr);
        System.out.println(numStr);
    }

    private static String sortStringNumber(String numStr) {
        //字符串变成字符串数组
        String[] str_arr = stringToArray(numStr);

        //字符串数组变成int数组
        int[] num_arr = toIntArray(str_arr);

        //int数组排序
        mySortArray(num_arr);

        //排序后的int数组变成字符串
        String temp = arrayToString(num_arr);

        return temp;
    }

    private static String arrayToString(int[] num_arr) {
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<num_arr.length; i++) {
            if(i!=num_arr.length-1)
                sb.append(num_arr[i]+SPACE_SEPARATOR);
            else
                sb.append(num_arr[i]);
        }
        return sb.toString();
    }

    private static void mySortArray(int[] num_arr) {
        Arrays.sort(num_arr);
    }

    private static int[] toIntArray(String[] str_arr) {
        int[] arr = new int[str_arr.length];
        for(int i=0; i<arr.length; i++) {
            arr[i] = Integer.parseInt(str_arr[i]);
        }
        return arr;
    }

    public static String[] stringToArray(String numStr) {
        String[] str_arr = numStr.split(SPACE_SEPARATOR+"+");
        return str_arr;
    }

}