定义:包装类就是将基本数据类型封装到类中
class IntDemo{
private int intValue;
public IntDemo(int intValue){
this.intValue = intValue;
}
public int intValue(){
return this.intValue;
}
}
public class Test4{
public static void main(String[] args){
//将整型常量封装到类中
IntDemo intDemo = new IntDemo(10);
int result = intDemo.intValue();
System.out.println(result+20);
}
}
1.分类
a.对象型包装类(Object的直接子类):Boolean(boolean)、Character(char)
b.数值型包装类(Number的直接子类),存在数值转换异常:Byte(byte)、Short(short)、Long(long)、Double(double)、Float(float)、Integer(int)
2.装箱与拆箱(基本数据类型与相应包装类的数据处理)
装箱:将基本数据类型变为包装类对象,利用每个包装类提供的构造方法实现装箱
拆箱:将包装类中包装的基本类型值取出,利用Number类提供的XXValue()实现拆箱处理
public class Test4{
public static void main(String[] args){
//手动装箱
Integer i = new Integer(10);
//手动拆箱
int result = i.intValue();
System.out.println(result+10);
//自动装箱
Integer i2 = 20;
int result2 = i2+10;
System.out.println(result2);
}
}
2.阿里编码规范:所有相同类型的包装类对象之间的值比较,全部使用equals方法比较
3.说明:对于Integer var = ?在-128~127之间的复制,Integer对象在Integer常量池产生,会复用已有对象, 这个区间内的Integer值可以直接使用==判断,除此之外的所有数据,都会在堆上产生,并不会复用已有对象
public class Test4{
public static void main(String[] args){
Integer i1 = 10;
Integer i2 = new Integer(10);
Integer i3 = 10;
Integer i4 = 200;
Integer i5 = 200;
System.out.println(i1 == i2);
System.out.println(i1 == i3);
System.out.println(i4 == i5);
}
}
4.使用int还是Integer?
a.[强制]所有POJO(简单JAVA类,Bean)类属性必须使用包装类型
//简单JAVA类
class Person{
private String name;
private Integer age;
}
b.[强制]PRC方法的返回值和参数必须使用
c.[推荐]所有的局部变量使用基本类型
5.字符串与基本类型转换
I.将字符串转为基本类型(静态方法):
调用各个包装类.parseXX(String str)
Integer.parseInt(String str)
public class Test4{
public static void main(String[] args){
String str = "123";
int i = Integer.parseInt(str);
String str1 = "123.10";
double b = Double.parseDouble(str1);
System.out.println(i+10);
System.out.println(b+10);
}
}
II.基本类型变为字符串
a. " "+基本类型
public class Test4{
public static void main(String[] args){
String str = ""+123;
System.out.println(str.length());
}
}
b.使用String类的valueof(基本类型,静态方法),此方法不产生垃圾空间
public class Test4{
public static void main(String[] args){
String str = String.valueOf(10);
System.out.println(str);
}
}