首页 / JAVA / java知识梳理一(Object)
java知识梳理一(Object)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java知识梳理一(Object),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2754字,纯文字阅读大概需要4分钟。
内容图文
![java知识梳理一(Object)](/upload/InfoBanner/zyjiaocheng/739/23700883e1e043b79b7ecac1852ec5c0.jpg)
- 最近工作量比较少,所以抽出时间整理一下java知识,简单描述下方法,以后有空或许会详细说
package java.lang;
//object是类层次结构的根,简称“万类之王”
public class Object {
//native 是java调用非java接口的修饰符
//registerNatives()可以当作一个注册本地函数的方法
private static native void registerNatives();
static {
registerNatives();
}
//返回类或者对象的class类型,可以获取其中大多数东西
public final native Class<?> getClass();
/**
* Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。
* 其主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。当集合要添加新的对象时,
* 先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,
* 如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值,就调用它的equals方法与新元素进行比较,
* 相同的话就不存了,不相同就散列其它的地址。
* 在java中,hashCode非常重要,比如equals、toString等重要方法都与之相关。
*/
public native int hashCode();
//在Object类中equals方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。
//这里我也不是很懂,==比较的是内存地址,Object中equals是由this==obj实现,但是,如果不覆盖的话我们默认其实也是调用了Object.equals方法,为什么equals判断的是内存中的值,emmmmmmmmmmm
public boolean equals(Object obj) {
return (this == obj);
}
//克隆,有次面试面试官问我对象可以克隆么,当时没看这里,搞得我懵了一下,这里克隆分为深克隆和浅克隆,有兴趣可以了解一下。
protected native Object clone() throws CloneNotSupportedException;
//返回值是对象名称+@+hash值
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//线程知识,唤醒一个线程,并获取锁
public final native void notify();
//notifyAll会唤醒所有线程并根据算法选取其中一个线程获取锁
public final native void notifyAll();
//导致线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常
public final native void wait(long timeout) throws InterruptedException;
//重载
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos > 0) {
timeout++;
}
wait(timeout);
}
//重载
public final void wait() throws InterruptedException {
wait(0);
}
//inalize()方法是Java中Object类的一个空实现方法,当这个对象的内存不再被使用时,GC在收集垃圾时就会调用这个方法,看起来就像是一个对象死亡之前的回调,当然GC只有在内存不足时才会进行垃圾回收
protected void finalize() throws Throwable { }
}
内容总结
以上是互联网集市为您收集整理的java知识梳理一(Object)全部内容,希望文章能够帮你解决java知识梳理一(Object)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。