java 基础之--java.lang.Object类

今天来说一说 java.lang.Object类(所有类的父类),所有类都直接或者间接的继承自该类。

1.构造方法:

public Object()  无参的构造方法

2.成员方法:

1) public final native Class<?> getClass();   返回此对象的运行时类,即字节码文件对象

2) public native int hashCode();   返回该对象的哈希码值

3) public boolean equals(Object obj){ return (this == obj); };  比较两个对象是否相同, 当子类重写:可比较属性值

4) protected native Object clone() throws CloneNotSupportedException;

5) public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }

     返回对象的字符串表示形式即内存地址值。组成:包名...类名(即类的全路径名)@内存地址值的十六进制

6) public final native void notify();  唤醒线程

7) public final native void notifyAll();

8) public final void wait() throws InterruptedException { wait(0); }

9) public final native void wait(long timeout) throws InterruptedException;

10) protected void finalize() throws Throwable { }

3.面试题:==和equals()的区别?

equals():

比较基本类型:基本类型比较的是值。

比较引用类型:默认比较的是引用类型的内存地址值是否相同,如果子类重写了该方法,那就得按照重写后的规则进行比较。

==:    

比较基本类型:比较的是基本类型的值是否相同。

比较引用类型:比较的是引用类型的内存地址值是否相同。

 String类源码中重写的equals方法如下:

public boolean equals (Object anObject){
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String) anObject;
        int n = this.value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                f(v1[i] != v2[i])
                return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

猜你喜欢

转载自blog.csdn.net/ahutdbx/article/details/82726802