protected Object clone()
创建并返回此对象的一个副本。
boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
protected void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
ClassgetClass()
返回此 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() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导
Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法?
1.clone方法
保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出异常。
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(long
timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生。
(1)其他线程调用了该对象的notify方法。
(2)其他线程调用了该对象的notifyAll方法。
(3)其他线程调用了interrupt中断该线程。
(4)时间间隔到了。
此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。
8.notify方法
该方法唤醒在该对象上等待的某个线程。
9.notifyAll方法
该方法唤醒在该对象上等待的所有线程。
试问的最多的问题是:“”。
一般情况下,3年以上工作经验的回答少于6个方法的,会导致减分,2年以下工作经验的知道6个以上会加分。到阿里云后面试过30+,回答让我满意的人很少。
作为一个半路出家当程序员,开始我总是痴迷于应用。a框架的配置,b框架的模板,c框架的控制……其实我对Java底层了解的很少,也没有想过了解java的底层。
触动我去看Object类的是几件事。 在上个东家做消息全网传输的时候,我用BeanUtil.copyProperties()拷贝对象的值,觉得很爽,后面某同事review我的代码提示我可以覆写对象的clone()方法的,毕竟,反射的效率是比较低的。
然后当我去做的时候,发现了更好的选择。然后在打印日志的时候,我习惯拼接属性,于是又被提示覆写toString()方法是包爽的,就这样,我认识了Object的2个方法。
看《Effecive Java》这本书,中间提到“为什么覆写equals()方法的时候总是要覆写hashcode()”。开始第一遍没有看懂,也懒得管了,因为hashcode我用的少,后来去参加一个面试,被人问到的时候,感觉无比的尴尬,我读过,却不知道答案!这是个人总结能力的问题,后面又不能不回来仔细看看这2个方法到底是做什么的。
关于线程的notify() , notifyAll() , wait()『3个』 方法,学习线程的时候看过,不过自从用了JUC的包,我基本没有在代码中使用过了。每次用eclipse的“alt + /” 快捷键从后翻总能看到,所以无论如何,这几个方法应该知道。
写到这里,有7个方法了,这几个方法很容易想到,在我开发java2年后,能够回答Object类中的7个方法。其实clone()方法不常用,所以,我 说的数字6是有依据的。
这6个方法,作为java程序员,天天不见也会见几次。如果写了几年java代码不知道基类里面的方法,就算你Hbase玩的再 熟,我凭什么相信你能写优质代码?如果一个在农村盖房子3年的砌匠不知道前后梁有多少瓴子(鲁班收徒的故事),您会怎么想?。
Object是所有类的父类,任何类都默认继承Object。
Object类到底实现了哪些方法?1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出异常。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方法该方法唤醒在该对象上等待的所有线程。
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() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
1、Object有作为名词的发音方式。在这种语境下,它的意思是‘物体’,就是你可以看见并触摸到的东西。
UFO stands for unidentified flying object.
UFO的意思是不明飞行物。
These are such beautiful objects! I'd like to keep them.
这些东西太好看了!我想要留着它们。
2、Object同样可以表示‘反对’的意思,表达对于某物或某人的不同观点。
I object having to wear a helmet when I ride a bike.
我反对当我骑自行车的时候必须要戴头盔。
The team objected to the changes that were going to be made to the project.
该小组反对将要在项目中所做的更改。
扩展资料
一、词义辨析:aim、goal、purpose、end、target、object、objective
aim从本义“靶子”引申而来,侧重比较具体而明确的目标,但常指短期目标。
goal指经过考虑和选择,需经坚持不懈的努力奋斗才能达到的最终目标。
purpose普通用词,既指以坚决、审慎的行动去达到的目的,又指心中渴望要实际的目标。
end指心目中怀着的某种目的,强调结果而非过程。较正式用词。
target指射击的靶,军事攻击目标。引申指被攻击、批评或嘲笑的目标。
object强调个人或需求而决定的目标、目的。
objective与object基本同义,但语义更广泛,指具体或很快能达到的目的,也可指军事目标。书面用词。
二、词义辨析:disagree、differ、object
这些动词均含有“不同意,反对”之意。
disagree指彼此间意见或看法不同,任何言行上的不合。
differ可替换disagree,但语气较温和,是disagree的委婉说法。
object语气强烈,侧重对某一具体计划、行为或作法等表示反对。常跟前置词to连用。
Java.lang.object类中有几个方法不是final的,我们会经常用重写它们,
protected Object clone() 创建并返回此对象的一个副本。
boolean equals(Object obj) 指示某个其他对象是否与此对象“相等”。
protected void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
int hashCode() 返回该对象的哈希码值。
String toString() 返回该对象的字符串表示。
1、clone()
我们为什么要用clone()?
当我们需要一个与某个对像时一模一样的对像时,但它们又是相互独立的,对它们各自的操作不会影响到另外的一个,这时候用clone()就可以
实现,当然,其他的方法也可以实现,但是重写clone()简单,高效
有一个不没重写clone()的例子,能帮助我们更好的去理解clone(),如下:
public class Test
{
public static void main(String[] args){
A a1=new A();
A a2=new A();
a1.name="a1";
a2=a1;
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
}
}
class A
{
public String name;
}
输出结果为:a1.name=a2;
a2.name=a2;
下面这个是重写了clone()的例子
public class Test
{
public static void main(String[] args) throws {
A a1=new A();
A a2=new A();
a1.name="a1";
a2=(A) a1.clone();
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
}
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.248秒