1、 private static native void registerNatives();
static {
registerNatives();
}
注释:native修饰,表示该方法没有在Java中实现,而是在C/C++中实现,编译成类库dll,然后再由Java调用它。作用:方法注册到本地,也就是初始化java方法映射到C/C++的方法。
2、 public final native Class<?> getClass();
注释:getClass()也是一个native方法,返回的是此Object对象的类对象/运行时类对象Class<?>。效果与Object.class相同。
3、 public native int hashCode();
注释:hashCode()方法返回一个整形数值,表示该对象的哈希码值。
hashCode()具有如下约定:
1).在Java应用程序程序执行期间,对于同一对象多次调用hashCode()方法时,其返回的哈希码是相同的,前提是将对象进行equals比较时所用的标尺信息未做修改。在Java应用程序的一次执行到另外一次执行,同一对象的hashCode()返回的哈希码无须保持一致;
2).如果两个对象相等(依据:调用equals()方法),那么这两个对象调用hashCode()返回的哈希码也必须相等;
3).反之,两个对象调用hasCode()返回的哈希码相等,这两个对象不一定相等。
即严格的数学逻辑表示为: 两个对象相等 <=> equals()相等 => hashCode()相等。因此,重写equlas()方法必须重写hashCode()方法,以保证此逻辑严格成立,同时可以推理出:hasCode()不相等 => equals()不相等 <=> 两个对象不相等。
修改equals()方法,必须同时重写hashCode()方法。
4、 public boolean equals(Object obj) {
return (this == obj);
}
注释:判断两个对象是否相等,每个类中有不同的判断方法;Object类中equals() 和== 是一样的,其他类如果有不同的比较方法,需要在自类中重新equals()方法。Equals()方法比较的是两个对象的特征、属性是否相同;==比较的是两个对象的地址或者值是否相同;
5、protected native Object clone() throws CloneNotSupportedException;
注释:native方法。返回一个克隆的对象。protected属性:在同一个包中的子类或者不同包中子类可以访问此方法,即子类中的父类对象是不能访问这个方法的。
6、 public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
注释:返回该对象名称+@+对象的hashCode转换成16进制的值。
7、 public final native void notify();
8、 public final native void notifyAll();
注释:唤醒该对象监视下的单线程/所有线程;(唤醒后,该同步代码块的方法继续往下执行,执行完了之后,释放锁,wait()所在程序块获得锁)
9、wait(long timeout)/wait(long timeout, int nanos):调用此方法所在的当前线程等待,直到在其他线程上调用此方法的主调(某一对象)的notisfy()/notisfyAll()方法,或超过指定的超时时间量。
10、 protected void finalize() throws Throwable { }
注释:当jvm回收对象时,自动调用该方法。