标签:包含 syn name ble for ima jni 而且 amp
时间不多了,快上车。
先看Jdk8 中Java中所有对象的爸爸类Object.java。
居住地址在java.lang.
总共也没有几个方法,大部分还都是native方法。
顺手把家底也掏了出来,
//object.c中方法 static JNINativeMethod methods[] = { {"hashCode", "()I", (void *)&JVM_IHashCode}, {"wait", "(J)V", (void *)&JVM_MonitorWait}, {"notify", "()V", (void *)&JVM_MonitorNotify}, {"notifyAll", "()V", (void *)&JVM_MonitorNotifyAll}, {"clone", "()Ljava/lang/Object;", (void *)&JVM_Clone}, };
貌似很简单嘛。来来来,请出题。
由简入深,请听题
1 equals() 和 == 区别是什么?
没有区别,就是对比2个引用是否相同。 obj = new Object(); Obj 引用, 暂且理解为对象的地址。
public boolean equals(Object obj) { return this==obj}
但很多时候,对使用者来说,不关心是指向了同一个对象,而是两个内容是否长的一样就行,比如String类。 子类继承后要对比内容,需覆盖override此方法。
2 equals()和hashcode()之间关系?
其实从jdk源码上根本看不出什么关系,没办法,这是面试官最爱问的问题之一。
hashcode() ,这里讨论爸爸类 Object中的。 由 JVM从对象头里面尝试直接取得hashcode返回 int 类型值,通过一系列复杂运算得到,与引用不一样。
如果hashcode不同,equals肯定不一样,因为一个对象不能有2个不同hashcode值;反之,不成立。
equals相同,表明指向同一个对象,hashcode肯定相同;反之,不成立。
因此如果子类override equals(), 一般推荐重写hashcode(); 原因是对象在放入容器时候,为了提升效率,利用上面的特性,优先调用hashcode,再比equals。
3 为什么要用clone? clone 如何使用?
一般情况,通过构造方法new 一个对象。此时的对象成员变量值都是默认值,如果要复制一个长的一样的,需要调用get/set 逐个复制。
如果而clone方法,JVM直接复制所有成员变量引用。 注意: 这是浅copy。基本类型,copy值,引用类型复制引用。
子类要实现clone,前提条件implement Cloneable, 虽然只是个空接口,JVM调用之前会做校验。
如果只是浅copy, clone(){ super.clone()}; 如果要求深层次,那必须重写,逐个clone 里面包含的对象。 JAVA设计模式中prototype。
4 finalize() ?
喜欢和finally, final 关键字放一起。 关键字和方法,根本没有关系。
这个方法主要是JVM调用,在引用回收之前调用一次。本想发挥一下的,考虑到JDK9中已经deprecated,那就算了。
5 getClass() ?
第一次遇到传说中的 final 方法, 该方法不可以override,Class<?>返回的是带有泛型(参数)的Class对象。
核心 : java中都是对象。 在Java中,每个class都有一个相应的Class对象. 编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。
int 应该是基本类型,不属于(对象)引用类型,不能用new 构造, 这本身没毛病。
基本类型却有类类型,而且获取类类型只有一种方式, 比如说
Class intclass = int.class;
引用类型
Class intclass = String.class;
Test test =new Test(); test.getClass();
Class.forName();
6 线程通信,多线程,锁相关的 wait notify?
前提条件: 必须放在Synchronized 同步块中使用。 生成者-消费者模式。 ReentrantLock 显式的实现了Lock, Monitor,condition。 这些JVM隐含实现
wait notify为什么不放入Thread类中?
7toString 包装使用了class hashcode方法 略
标签:包含 syn name ble for ima jni 而且 amp
原文地址:https://www.cnblogs.com/java-kota/p/9092491.html