首页 课程 师资 教程 报名

告诉你Object类有哪些方法

  • 2022-12-06 10:19:21
  • 274次 星辉

1. getClass()方法

public final Class getClass(){ }

返回引用中存储的实际对象类型

应用:通常用于判断两个引用中实际存储对象类型是否一致

package com.zhuo.qf;
public class Student {
	private String name;
	private int age;	
	public Student() {
		// 无参构造方法
	}	
	//有参构造方法
	public Student(String name, int age) {
		super();
		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;
	}	
}
package com.zhuo.qf;
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不属于同一个类型"); //输出
		}
	}
}

2. hashCode()方法

public int hashCode() { }

返回该对象的哈希码值。

哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值。

一般情况下相同对象返回相同哈希码。

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(s1.hashCode());  //804564176		
		System.out.println(s2.hashCode());  //1421795058		
		Student s3=s1;
		System.out.println(s3.hashCode());  //804564176
	}
}

3. toString()方法

public String toString() { }

返回该对象的字符串表示(表现形式)

package com.zhuo.qf;
public class TestStudent {
	public static void main(String[] args) {
// 3. toString方法
		System.out.println("----------3toString-------------");
		System.out.println(s1.toString()); //com.zhuo.qf.Student@2ff4acd0 -->十六进制
		System.out.println(s2.toString()); //com.zhuo.qf.Student@54bedef2
    }
}

可以根据程序需求覆盖该方法,如:展示对象各个属性值。

package com.zhuo.qf;
public class Student {	
    //重写toString()方法
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
}

重写toString()方法后返回值为:

package com.zhuo.qf;
public class TestStudent {
	public static void main(String[] args) {
// 3. toString()方法
		System.out.println("----------3toString-------------");
		System.out.println(s1.toString()); //Student [name=aaa, age=20]
		System.out.println(s2.toString()); //Student [name=bbb, age=22]
    }
}

4.equals()方法

public boolean equals(Object obj) { }

默认实现为(this == obj),比较两个对象地址是否相同。

可进行覆盖,比较两个对象的内容是否相同。

equals()方法覆盖步骤

比较两个引用是否指向同一个对象。

判断obj是否为null

判断两个引用指向的实际对象类型是否一致。

强制类型转换。

依次比较各个属性值是否相同。

package com.zhuo.qf;
public class Student {
	private String name;
	private int age;		
	@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()) {
//			
//		}
		// instanceof 判断对象是否是某种类型
		if(obj instanceof Student) {
			//4强制类型转换
			Student s = (Student)obj;
			//5比较属性
			if(this.name.equals(s.getName())&&this.age==s.getAge()) {
				return true;
			}
	}
		return false;
}

5. finalize()方法

当对象被判断为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。

垃圾对象:没有有效引用指向此对象时,为垃圾对象。

垃圾回收:由GC销毁垃圾对象,释放数据存储空间。

自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。

手动回收机制:使用System.gc();T通知JVM执行垃圾回收。

package com.zhuo.qf;
public class Student {
	private String name;
	private int age;   
	// 无参构造方法
	public Student() {
	}	
	//有参构造方法
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	protected void finalize() throws Throwable {
		System.out.println(this.name+"对象被回收了");
	}
}
package com.zhuo.qf;
public class TestStudent2 {
	public static void main(String[] args) {
//		Student s1 = new Student("aaa",18);
//		Student s2 = new Student("bbb",18);
//		Student s3 = new Student("ccc",18);
//		Student s4 = new Student("ddd",18);
//		Student s5 = new Student("eee",18);
		new Student("aaa",18);  //aaa被回收了
		new Student("bbb",18);	//bbb被回收了
		new Student("ccc",18);	//ccc被回收了
		new Student("ddd",18);	//ddd被回收了
		new Student("eee",18);	//eee被回收了
		//回收垃圾
		System.gc();
		System.out.println("回收垃圾");
	}
}

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交