hashCode方法
2024-01-07 20:36:56
/**
* @Description hashCode方法
*/
package com.chapter.demo05;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写 toString方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//重写 equals方法
@Override
public boolean equals(Object obj){
//1.判断两个对象是否是同一个引用
if(this == obj){
return true;
}
//2.判断obj是否是null
if(obj == null){
return false;
}
//3.判断是否是同一个类型
/**
if(this.getClass() == obj.getClass()){
}*/
//intanceof 判断对象是否是某种类型
if(obj instanceof Student){
//4.强制类型转换
Student s=(Student) obj;
//5.比较熟悉
if(this.name.equals(s.getName()) && this.age == s.getAge()){
return true;
}
}
return false;
}
//重写 finalize方法
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+"对象被回收了");
}
}
/**
* @Description hashCode方法
*/
package com.chapter.demo05;
public class TestStudent {
public static void main(String[] args) {
Student s1 = new Student("aaa",20);
Student s2 = new Student("bbb",22);
//判断 s1和 s2 是不是同一个类型
Class class1 = s1.getClass();
Class class2 = s2.getClass();
if(class1 == class2){
System.out.println("s1和s2属于同一个类型");
}else {
System.out.println("s1和s2不属于同一个类型");
}
//hashCode方法
System.out.println("-----------2.hasCode---------------");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
Student s3 = s1;
System.out.println(s3.hashCode());
//toString方法
System.out.println("-----------3.toString---------------");
System.out.println(s1.toString());
System.out.println(s2.toString());
//equals方法:判断两个对象是否相等
System.out.println("-----------4.equals---------------");
System.out.println(s1.equals(s2));
Student s4 = new Student("小明",17);
Student s5 = new Student("小明",17);
System.out.println(s4.equals(s5));
}
}
/**
* @Description hashCode方法
*/
package com.chapter.demo05;
public class TestStudent2 {
public static void main(String[] args) {
/** 这样定义不会被回收
Student s1 = new Student("aaa",20);
Student s2 = new Student("bbb",20);
Student s3 = new Student("ccc",20);
Student s4 = new Student("ddd",20);
Student s5 = new Student("eee",20);
*/
new Student("aaa",20);
new Student("bbb",20);
new Student("ccc",20);
new Student("ddd",20);
new Student("eee",20);
//回收垃圾
System.gc();
System.out.println("回收垃圾");
}
}
/** finalize()方法
* 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
* 垃圾对象:没有有效引用指向此对象是,为垃圾对象
* 垃圾回收:有GC销毁垃圾对象,释放数据存储空间。
* 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
* 手动回收机制:使用System.gc; 通知JVM执行垃圾回收。
*/
文章来源:https://blog.csdn.net/my_lucky_bird/article/details/135444072
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!