基本类型的包装类(Wrapper Class)
8种基本类型对应的包装类
基本类型包括整数类型(byte,short,int,long),字符类型 char,浮点类型(float、double),布尔类型 boolean
基本数据类型 | 包装类 |
---|---|
byte 1字节 -128(-2^7) ~ 127(2^7 -1) | Byte |
short 2字节 0x8000(-2^15) ~ 0xffff(2^15 - 1) | Short |
int 4字节 0x80000000(-2^31) ~ 0xffffffff(2^31 -1) | Integer |
long 8字节 | Long |
char 2字节 | Character |
float 4字节 | Float |
double 8字节 | Double |
boolean (没强制指定,一般是 1字节) | Boolean |
装箱 与 拆箱
以Integer为例,
装箱:将基本类型转换为包装类
Integer i1 = new Integer(10);
Integer i2 = Integer.valueOf(10);//推荐,带有缓存
拆箱:将包装类转换为基本类型
int val = i1.intValue();
jdk1.5后,提供自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)
Integer i1 = 10;
int value = i1;
String对象 <–> 基本类型变量
String --> int 等 :
int Integer.parseInt(String str)
int 等 --> String
String String.valueOf(int val)
或者 10 + “”;
当然,可以构造为Integer,然后自动拆箱;这样就麻烦了。。
String <–> 包装类
String --> Integer
Integer i1 = new Integer("12");
// 或者
Integer i1 = Integer.valueOf("12")
包装类 --> String
String str = 任何对象.toString();
例子:
// String --> Integer
Integer i1 = Integer.valueOf("12");//12
// Integer --> String
String str = i1.toString();//"12"
// int --> Integer
Integer i2 = 12;//这是自动装箱 还可以手动 Integer i2 = Integer.valueOf(12);
// Integer --> int
int val = i2;//这是自动拆箱 还可以手动 int val = i2.intValue();
// String -->int
int i3 = Integer.valueOf("12");//12 这是 String --> Integer 后自动拆箱 -> int
int i4 = Integer.parseInt("12");//12 直接使用 Integer 的 static函数 更便捷。
// int --> String
String str2 = i3 + "";//数和String加,自动变为String
String str3 = String.valueOf(12);//"12"
重写equals方法
//重写equals方法
public boolean equals(Object obj){
if(this == obj)
return true;
if(obj != null && obj.getClass() == Person.class){
Person p = (Person)obj;
if(this.getIdStr().equals(p.getIdStr())
return true;
}
return false;
}
如果有必要,重写 Object类的 hashcode和 equals方法。 equals方法以关键 Field来作为判断两个对象是否相等的标准, 除此之外,还应该保证两个用 equals方法判断为相等的对象的 hashcode也相等。