大家好,今天给各位分享object类有哪些方法的一些知识,其中也会对object类有什么方法进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
本文目录
java语言中Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法?
(1)clone方法
保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。
(2)getClass方法
final方法,获得运行时类型。
(3)toString方法
该方法用得比较多,一般子类都有覆盖。
(4)finalize方法
该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。
(5)equals方法
该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。
(6)hashCode方法
该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash-Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。
(7)wait方法
wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(longtimeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生。
(1)其他线程调用了该对象的notify方法。
(2)其他线程调用了该对象的notifyAll方法。
(3)其他线程调用了interrupt中断该线程。
(4)时间间隔到了。
此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。
(8)notify方法
该方法唤醒在该对象上等待的某个线程。
(9)notifyAll方法
该方法唤醒在该对象上等待的所有线程。
protectedObjectclone()创建并返回此对象的一个副本。
booleanequals(Objectobj)指示其他某个对象是否与此对象“相等”。
protectedvoidfinalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Class<?>getClass()返回此Object的运行时类。
inthashCode()返回该对象的哈希码值。
voidnotify()唤醒在此对象监视器上等待的单个线程。
voidnotifyAll()唤醒在此对象监视器上等待的所有线程。
StringtoString()返回该对象的字符串表示。
voidwait()在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待。
voidwait(longtimeout)在其他线程调用此对象的notify()方法或notifyAll()方法,或者超过指定的时间量前,导致当前线程等待。
voidwait(longtimeout,intnanos)在其他线程调用此对象的notify()方法或notifyAll()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
Java中所有类(包括用户自己定义的类)都自动继承Object类,即Object类是所有类的父类。
Object中常用方法:
publicbooleanequals(Objectobj)
比较当前对象与obj是否为同一对象,返回值:ture/false
publicStringtoString()
返回当前对象的字符串表达形式
publicnativeinthashCode();
返回对象的Hash码。Hash码是标志对象的唯一值,Hash码相同的对象是同一对象
protectedvoidfinalize()throwsThrowable
对象销毁时被调用
以下三个函数用于控制线程
publicfinalnativevoidnotify();publicfinalnativevoidnotifyAll();publicfinalnativevoidwait();
native型方法指由C++语言编写的方法,Java解释器对其进行转义后才执行。
“==”与equals()
"=="一般用于基本数据类型比较。若用作两个引用对象比较,仅当引用变量引用同一个对象时,才返回true,否则false。
voidEqualCompare()
{
Strings1=newString("Hello");
Strings2=newString("Hello");
Strings3="Hello";
Strings4="Hello";
//未使用new,s4引用既存的对象(编译器创建对象之前先进行检测"Hello"是否已经存在,若存在,则返回原对象的引用)
System.out.println(s1.equals(s2));//truex1行
System.out.println(s1==s2);//false两变量引用不同对象
System.out.println(s3.equals(s4));//true两变量引用相同对象
System.out.println(s3==s4);//true两变量引用相同对象
}
比较对象时,一般用equal()方法。
Object类方法定义:publicbooleanequals(Objectobj){return(this==obj);}
不同的类可方便的对该对象进行覆盖。String类就覆盖了Object类的equals()方法,所以x1行输出true.
a==b如果a,b引用同一对象,则返回true;
a.equals(b)如果a对象内容和b对象内容相同,则返回true
如果未重载equals()方法的类对象使用该方法与另一个对象进行比较,则调用Object的equals()方法,仍然是对象的比较,返回值为false。
OK,关于object类有哪些方法和object类有什么方法的内容到此结束了,希望对大家有所帮助。