Object类 11种方法
1概述
如果⼀个类没有特别指定⽗类,那么默认则继承⾃Object类。例如:
public class MyClass /extends Object/ { // … }
1 toString⽅法
⽅法摘要
public String toSting():返回该对象的字符串表示
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值
覆盖重写
如果不希望使⽤toString⽅法的默认⾏为,则可以对它进⾏覆盖重写。例如⾃定义的Person类:
public class Person {
private String name; private int age; @Override public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } // 省略构造器与Getter Setter }
2 hashCode()
native方法,用于返回对象的哈希吗,主要使用在哈希表中,比如jdk中的 HashMap
3 equals⽅法
⽅法摘要
public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
调⽤成员⽅法equals并指定参数为另⼀个对象,则可以判断这两个对象是否是相同的。这⾥的“相 同”有默认和⾃定义两种⽅式。
1.默认地址⽐较
如果没有重写equals方法,那么Object类中默认进行==运算符 的对象地址比较,只要不是同一个对象,结果必然是false.
2.对象内容⽐较
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可覆盖重写equals方法。例如:
import java.util.Objects; public class Person {
private String name; private int age; @Override public boolean equals(Object o) {
// 如果对象地址⼀样,则认为相同 if (this == o) return true; // 如果参数为空,或者类型信息不⼀样,则认为不同 if (o == null || getClass() != o.getClass()) return false; // 转换为当前类型 Person person = (Person) o; // 要求基本类型相等,并且将引⽤类型交给java.util.Objects类的equals静态⽅ 法取⽤结果 return age == person.age && Objects.equals(name, person.name); } }
public static boolean equals(Object a, Object b) :判断两个对象是否相等
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b)); }
4 Class getClass()
public class Student {
String name; int age; public Student(String name, int age) {
this.name = name; this.age = age; } public Student() {
} public String getName() {
return name; } public void setName(String name) {
this.name = name; } public void setAge(int age) {
this.age = age; } public int getAge() {
return age; } }
主方法实现
public class Demo {
public static void main(String[] args) throws Throwable {
System.out.println("------Class getClass()----"); Student stu1 = new Student("qw", 12); Student stu2 = new Student("ae", 12); Class aClass = stu1.getClass(); Class aClass1 = stu2.getClass(); //同种类型的对象,对应的字节码对象都是同一个 System.out.println(aClass==aClass1);//true
5 Object clone()-克隆
定义Clone类
public class Clone {
String name; int age; public Clone(String name, int age) {
this.name = name; this.age = age; } public Clone() {
} 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; } }
子克隆类:
public class ZiClone extends Clone implements Cloneable{
@Override protected Object clone() throws CloneNotSupportedException {
return super.clone(); } }
主方法实现
public class Demo {
public static void main(String[] args) throws Throwable {
ZiClone zi = new ZiClone(); /*深克隆复制是对象 */ zi.setName("lucy"); Object clone= zi.clone();//多态 ZiClone clone1=(ZiClone)clone; //==对比是时地址值 System.out.println(zi==clone1);//false //复制出来的在堆中的内存位置不一样 /*浅克隆 复制引用*/ ZiClone clone2=zi; System.out.println(zi==clone2);//true } }
6 void finalize() -Gc垃圾回收机制
7.wait(long timeout)
8.wait(long timeout, int nanos)
比上者多了 nanos参数,表示额外的时间(以毫秒为单位,范围是 0 – )
9.wait()
跟上面两个一样,只不过该方法会一直等下去,没有超时这个概念
10.notify()
11.notifyAll()
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233824.html原文链接:https://javaforall.net