锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题:
1.Object类的常见方法总结
Object类是一个特殊的类,是所有类的父类。它主要提供了以下 11个方法:
public final nativeClass<?>getClass()//native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。
public nativeinthashCode()//native方法,用于返回对象的哈希码,主要使用在哈希表中,比如JDK中的HashMap。
publicbooleanequals(Objectobj)//用于比较2个对象的内存地址是否相等,String类对该方法进行了重写用户比较字符串的值是否相等。
protected nativeObjectclone()throwsCloneNotSupportedException//naitive方法,用于创建并返回当前对象的一份拷贝。一般情况下,对于任何对象x,表达式x.clone() != x为true,x.clone().getClass() == x.getClass()为true。Object本身没有实现Cloneable接口,所以不重写clone方法并且进行调用的话会发生CloneNotSupportedException异常。
publicStringtoString()//返回类的名字@实例的哈希码的16进制的字符串。建议Object所有的子类都重写这个方法。
public final nativevoidnotify()//native方法,并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。
public final nativevoidnotifyAll()//native方法,并且不能重写。跟notify一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。
public final nativevoidwait(longtimeout)throwsInterruptedException//native方法,并且不能重写。暂停线程的执行。注意:sleep方法没有释放锁,而wait方法释放了锁 。timeout是等待时间。
public finalvoidwait(longtimeout,intnanos)throwsInterruptedException//多了nanos参数,这个参数表示额外时间(以毫微秒为单位,范围是0-999999)。所以超时的时间还需要加上nanos毫秒。
public finalvoidwait()throwsInterruptedException//跟之前的2个wait方法一样,只不过该方法一直等待,没有超时时间这个概念
protectedvoidfinalize()throwsThrowable{ }//实例被垃圾回收器回收的时候触发的操作
2.Java序列化中如果有些字段不想进行序列化,怎么办?
对于不想进行序列化的变量,使用 transient关键字修饰。
transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。
了解更多请点我头像或到我的主页去获得,谢谢