常用类第27天(equals90方法,finalize()方法,包装类,装箱和拆箱,基本类型转字符串类型)
equals()方法
public boolean equals(Object obj){}
- 默认实现为(this==obj),比较两个地址是否相同
- 可进行覆盖(也就是重写),比较两个对象的内容是否相同,重写步骤如下:
- 比较两个引用是否指向同一个对象
- 判断obj是否为null
- 判断两个引用指向的实际对象类型是否一致
- 强制类型转换
- 依次比较各个属性值是否相同
重写代码如下(可用Alt+Insert快捷键)
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
例:
Student s1 = new Student("张三", 23);
Student s2 = new Student("张三", 23);
Student s3=s1;
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
重写前结果:

重写后结果:

finalize()方法
- 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
- 垃圾对象:没有有效引用指向此对象时,判定为垃圾对象
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间
- 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
- 手动回收机制:使用System.gc(),通知JVM执行垃圾回收
![image]()
包装类
基本数据类型所对应的引用数据类型
Object可统一所有数据,包装类的默认值是null
| 基本数据类型 | 包装类型 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
装箱与拆箱
装箱:基本类型转换成引用类型
拆箱:引用类型转换成基本类型
//类型转换:装箱(将基本类型转成引用类型的过程)
int num1=18;
//使用Integer类创建对象
Integer integer1=new Integer(num1);
Integer integer2=Integer.valueOf(num1);
//类型转换:拆箱(将引用类型转成基本类型的过程)
Integer integer3=new Integer(100);
int num2= integer3.intValue();
浮点型数据也可以如此操作
float a1=3;
Float b1=new Float(a1);
Float b2=Float.valueOf(a1);
float a2=b1.floatValue();
jdk1.5版本之后可实现自动装箱及拆箱
//jdk1.5之后,提供自动装箱和拆箱,不需要手动做装封箱的操作
int num3=10;
Integer integer4=num3;
num3=integer4;
基本类型和字符串转换
基本类型转换为字符串类型
int num1=10;
//1,使用"+"
String s1=num1+"";
//2,使用toString(10代表转换为几进制)
String s2= Integer.toString(num1,10);
字符串类型转换为基本类型,使用parseXXX(XXX为需要装换成为的数据类型)
String s3="150";
int s3=Integer.parseInt(s3);
注意:字符串转为boolean类型时,"true"将会转成true,任何非"true"都会转换成false
String str1="true";
String str2="false";
String str3="rfger";
String str4="";
boolean bo1=Boolean.parseBoolean(str1);
boolean bo2=Boolean.parseBoolean(str2);
boolean bo3=Boolean.parseBoolean(str3);
boolean bo4=Boolean.parseBoolean(str4);
System.out.println(bo1);
System.out.println(bo2);
System.out.println(bo3);
System.out.println(bo4);



浙公网安备 33010602011771号