包装类
包装类的好处
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
包装类的常用操作
用于基本数据类型与字符串之间的转换、进制转换等
基本数据类型和包装类的对应
以Integer为例:API
String和int类型相互转换,其他基本数据类型同理
int---->String:推荐使用1,2
- 用"+"号和""拼接
- String.valueOf(int i)
- int---Integer--String(Integer类对象调用toString方法)
- Integer.toString(i)方法
public static void main(String[] args) {
int i = 100;
String s1 = i + "";//1.用"+"号与""拼接
System.out.println("方法1 : " + s1);
String s2 = String.valueOf(i);//2.用String.valueOf(i)
System.out.println("方法2 : " + s2);
String s3 = new Integer(i).toString();//3.int---Integer---Integer对象调用toString方法
System.out.println("方法3 : " + s3);
String s4 = Integer.toString(i);//4.用Integer.toString(i)方法
System.out.println("方法4 : " + s4);
}
String---->int:
推荐使用2,
基本数据包装类有8中,其中7种都有paseXxx(String str)方法,可以将这7中字符串表现形式转换成基本数据类型,char的包装类没有paseXxx(String str)方法,字符串到字符通过toCharArray()就可以把字符串转换成字符数组了
- String---Integer---int
- Integer.parseInt(s)
public static void main(String[] args) {
String s = "200";
int i1 = new Integer(s).intValue();//1.String---Integer---int
System.out.println("方法1 : " + i1);
int i2 = Integer.parseInt(s);//2.Integer.parseInt(s)
System.out.println("方法2 : " + i2);
//String转基本数据类型
Byte.parseByte("66");//byte
Short.parseShort("100");//short
Integer.parseInt("101");//int
Long.parseLong("10000");//long
Float.parseFloat("3.14");//float
Double.parseDouble("0.12345");//double
char[] charArr = "abc".toCharArray();
Boolean.parseBoolean("true");//boolean
}
自动装箱和拆箱
- JDK1.5新特性
- 自动装箱:把基本数据类型转换为包装类型
- 自动拆箱:把包装类型装换为基本数据类型
public static void main(String[] args) {
//在没有自动装箱和自动拆箱之前
int i1 = 100;
Integer i2 = new Integer(i1);//装箱
int i3 = i2.intValue();//拆箱
//有了自动装箱和自动拆箱后
Integer i4 = 100;//自动装箱
int i5 = i4 + 200;//自动拆箱
/*注意事项:
在使用时,Integer x = null;代码就会出现NullPointException
建议先判断是否为null,然后再使用*/
}
-128到127是byte的取值范围,如果在这个范围内,自动装箱就不会再创建新的对象,而是从常量池中获取,如果超过了byte取值范围就会再创建新的对象,查看源码
Integer的equals方法
重写了Object类的equals方法,比较的是属性值,底层源码如下