在java中,很多类的方法都需要接受引用类型的对象,此时就无法将基本数据类型的值传入。为了解决这样的问题,JDK提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的对象。
包装类将基本数据类型进行装换。
char | Character |
---|---|
int | Integer |
剩下的都是将首字母大写
装箱和拆箱
包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念。
装箱
将基本数据类型转换为包装类
下面是以int类型的包装类Integer为例来演示装箱:
int a = 20;
Integer in = new Integer(a);
System.out.println(in.toStirng());
拆箱:
将包装类转换为基本数据类型
Integer num = new Integer(20);
int a = 10;
int sum = num.intValue()+a;
System.out.println("sum="+sum);
//sum = 20;
Integer的intValue()方法
可以将Integer类型的值转为int类型,这个方法可以来进行拆箱操作。
pareselnt()方法
它是一个静态方法,用于将一个字符串形式的数组转为int类型。
int w = Integer.parseInt("20");
int h = Integer.parseInt("10");
for(int i=0;i<h;i++){
StringBuffer sb = new StringBuffer();
for(int j=0;j<w;j++){
sb.append("*");
}
System.out.println(sb.toString());
}
在使用包装类的时候需要注意以下几点:
- 包装类都重写了Object类中的toString()方法,已字符串的形式返回被包装的基本数据的值。
- 除了Character外,包装类都有valueOf(String s )方法,可以根据String类型的参数创建包装类对象。
- 除了Character外,包装类都有parseXxx(String s)方法,将字符串转换为对应基本类型的数据。
自动拆箱和装箱
自动装箱
int num = 20;
Integer number = num;//自动装箱
自动拆箱
Integer number = new Integer(18);
int number2 = number;//自动拆箱
混合运算
public staticInteger add(Integer a,Integer b)
{
return a+b;
}
字符串排序程序设计
public class WrapperTest {
private static final String SPACE_SEPARATOR = " ";
public static void main(String[] args) {
String numStr = "20 52 78 65 32 16 2 96";
System.out.println(numStr);
numStr = sortStringNumber(numStr);
System.out.println(numStr.toString());
}
public static String sortStringNumber(String number) {
//将字符串变成字符数组
String [] str_arr = stringToArray(number);
//将字符数组变成int数组
int [] num_arr = toIntArray(str_arr);
//对int数组进行排序
mySortArray(num_arr);
//将排好的int数组变成字符串
String temp = arrayToString(num_arr);
return temp;
}
//将字符串变成字符数组
public static String arrayToString(int [] num_arr) {
StringBuffer sb = new StringBuffer();
for(int x= 0;x<num_arr.length;x++) {
if(x!=num_arr.length-1) {
sb.append(num_arr[x]+SPACE_SEPARATOR);
}
else {
sb.append(num_arr[x]);
}
}
return sb.toString();
}
public static void mySortArray(int[] num_arr) {
Arrays.sort(num_arr);
}
public 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;
}
}