Object类有几个方法 getclass()方法有什么作用
如何能比较好的理解他们
Object类有几个方法 getclass()方法有什么作用
如何能比较好的理解他们
Java中Object类
Java基础Java中所有类(包括用户自己定义的类)都自动继承Object类,即Object类是所有类的父类。
Object中常用方法:
public boolean equals(Object obj)
比较当前对象与obj是否为同一对象,返回值:ture/false
public String toString()
返回当前对象的字符串表达形式
public native int hashCode();
返回对象的Hash码。Hash码是标志对象的唯一值,Hash码相同的对象是同一对象
protected void finalize()throws Throwable
对象销毁时被调用
以下三个函数用于控制线程
public final native void notify();public final native void notifyAll();public final native void wait();
native型方法指由C++语言编写的方法,Java解释器对其进行转义后才执行。
“==”与equals()
"==" 一般用于基本数据类型比较。若用作两个引用对象比较,仅当引用变量引用同一个对象时,才返回true,否则false。
void EqualCompare()
{
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello";
//未使用new,s4引用既存的对象(编译器创建对象之前先进行检测"Hello"是否已经存在,若存在,则返回原对象的引用)
System.out.println(s1.equals(s2)); // true x1行
System.out.println(s1 ==s2); // false 两变量引用不同对象
System.out.println(s3.equals(s4)); //true 两变量引用相同对象
System.out.println(s3 ==s4); // true 两变量引用相同对象
}
比较对象时,一般用equal()方法。
Object类方法定义:public boolean equals(Object obj){ return (this == obj);}
不同的类可方便的对该对象进行覆盖。String类就覆盖了Object类的equals()方法,所以x1行输出true.
a==b 如果a,b引用同一对象,则返回true;
a.equals(b) 如果a对象内容和b对象内容相同,则返回true
如果未重载equals()方法的类对象使用该方法与另一个对象进行比较,则调用Object的equals()方法,仍然是对象的比较,返回值为false。
构造方法摘要 | |
---|---|
Object() |
方法摘要 | |
---|---|
protected Object | clone() 创建并返回此对象的一个副本。 |
boolean | equals(Object obj) 指示其他某个对象是否与此对象“相等”。 |
protected void | finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 |
Class<?> | getClass() 返回此 Object 的运行时类。 |
int | hashCode() 返回该对象的哈希码值。 |
void | notify() 唤醒在此对象监视器上等待的单个线程。 |
void | notifyAll() 唤醒在此对象监视器上等待的所有线程。 |
String | toString() 返回该对象的字符串表示。 |
void | wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 |
void | wait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 |
void | wait(long timeout, int nanos) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。 |