`
cectsky
  • 浏览: 44635 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

【java】java.lang.Object类学习

阅读更多

学习一个比较parent的class吧。我什么时候能毕业啊。

package java.lang;

/**
 * Class Object is the root of the class hierarchy(层次结构)
 */
public class Object {

	private static native void registerNatives();

	static {
		registerNatives();
	}

	/**
	 * Returns the runtime class of an object. That Class
	 * object is the object that is locked by static synchronized 
	 * methods of the represented class.
	 PS:当static method需要synchronized修饰的时候,需要该object的Class
	 */
	public final native Class getClass();

	/**
	 * 常规协定:
	 * The general contract of hashCode is: 
	 * <li>Whenever it is invoked on the same object more than once during 
	 *     an execution of a Java application, the hashCode method 
	 *     must consistently return the same integer。
	 就是对同一object多次调用hashCode都返回一样的value
	 
	 * <li>如果2个object的equals方法判断相等,他们的hashCode一定相等
	 */
	public native int hashCode();

	/**
	一大堆的规定如自反性不想记忆,也记不住,总之就是那样
	主要是下面的Note:
	 * Note that it is generally necessary to override the hashCode
	 * method whenever this method is overridden, so as to maintain the
	 * general contract for the hashCode method, which states
	 * that equal objects must have equal hash codes. 
	 *
	必须override hashcode,参照上面的协定
	 */
	public boolean equals(Object obj) {
		return (this == obj);
	}

	/**protected修饰,需要override*/
	protected native Object clone() throws CloneNotSupportedException;

	public String toString() {
		return getClass().getName() + "@" + Integer.toHexString(hashCode());
	}

	/**
	 * 唤醒在this object 上wait的单个线程,从等待池转移到锁池。
	 这个线程需要重新获取object's monitor,然后同步
	 
	 如果有一车线程都在那等着,就像等公交一样,我擦。
	 那么JVM会选任意一个thread唤醒让她上车,要问选择的条件,我想谁好看就上谁吧
	 */
	public final native void notify();

	/**
	 * 唤醒在this object上wait的所有线程,这回公平了,都TMD给我上车吧,
	 看你们谁能最先拿到object's monitor,是抢占式的,不是时间片式的。
	 */
	public final native void notifyAll();

	/**
	 使当前线程等待,放弃monitor,进入等待池.如果另外一个线程调用了interrupted,则抛
	 String s = "javaeye";
	 synchronized(s){
	 	while(1==1){
	 		obj.wait();
	 	}
	 }
	 */
	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 >= 500000 || (nanos != 0 && timeout == 0)) {
			timeout++;
		}

		wait(timeout);
	}

	public final void wait() throws InterruptedException {
		wait(0);
	}

	
	protected void finalize() throws Throwable {
	}
}

 

分享到:
评论

相关推荐

    java.lang.IllegalArgumentException Cannot format given Object as a Date

    java.lang.IllegalArgumentException Cannot format given Object as a Date

    Java总结篇系列:java.lang.Object

     Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java中基本的类java.lang.Object开始谈起。  Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object...

    javax.activation.UnsupportedDataTypeException: no object DCH for MIME type

    在Oracle 11.2.0.4中调用 javax.mail 发送邮件时...EXEC dbms_java.grant_permission( '&lt;your_schema_please_change&gt;','SYS:java.lang.RuntimePermission', 'setContextClassLoader', '' ); 第二步:解决方案看文档中。

    jdbc 帮助类 java 自带连接池 v1.01

    boolean delete(java.lang.String sql, java.util.Map&lt;java.lang.Integer,java.lang.Object&gt; elements) 根据传入的参数删除单条记录的方法 boolean delete(java.lang.String sql, java.lang.Object[] elements)...

    java jdbc帮助类 v1.0 自带连接池

    boolean delete(java.lang.String sql, java.util.Map&lt;java.lang.Integer,java.lang.Object&gt; elements) 根据传入的参数删除单条记录的方法 boolean delete(java.lang.String sql, java.lang.Object[] elements)...

    WebLogic错误 java.lang.AssertionError: Registered more than one

    weblogic日志报如下错误原因及解决方法: WebLogic Server 9.2 Repeatedly Throws: java.lang.AssertionError: Registered more than one instance with the same objectName

    在Java中异常分析

    java.lang.Object java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.ArithmeticException 当出现异常的运算条件时,抛出此异常。  这个异常的解释是 "数学运算异常 ",...

    java.lang.object源码-finalize-:个人博客(http://bit.ly/javafinalize)上java.lang

    java.lang.object原始码最终不推荐使用java.lang.Object.finalize() 我的博客文章中的示例的Gradle源代码存储库。 在Linux Mint(SUSE Linux)上构建和测试。 由于gradle当前不支持Java 11,因此可以使用标准Java...

    java源码阅读之java.lang.Object

    主要介绍了java源码阅读之java.lang.Object,具有一定借鉴价值,需要的朋友可以参考下

    java.lang包.ppt

    了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object

    CRASH问题:java.lang.NullPointerException

    java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.ImageView.setImageResource(int)’ on a null object reference 今天在家练习ListView的时候,遇到一个java.lang....

    dubbo-monitor-simple.zip

    dubbo-monitor监控中心,基于alibaba dubbo.jar开发,解决Decode rpc invocation failed: expected map/object at java.lang.String (Ljava/lang/String)、com.alibaba.dubbo.common.URL' could not be instantiated...

    java.lang包介绍

    提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。

    stuts2.2_API文档

    java.lang.Object com.opensymphony.xwork2.ActionContext (implements java.io.Serializable) org.apache.struts2.ServletActionContext (implements org.apache.struts2.StrutsStatics) org.apache.struts2....

    Java 高级特性.doc

    import java.lang.Integer.parseInt; public class StaticImport { int x = parseInt("123"); System.out.println(x); } 这样的程序如果不在IDE 工具中输入,是很难看出这个程序代码会出现问题,可它偏偏就出问题...

    JAVA_API1.6文档(中文)

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    JAVA之Object类所有方法

    java.lang.Object下的各种方法

    Beginning iOS 6 Development Exploring the iOS SDK SourceCode

    Beginning iOS 6 Development Exploring the iOS SDK SourceCode

    spring4.0 API

    spring 4.0 未翻译java.lang.Object java.util.AbstractMap,V&gt; (implements java.util.Map,V&gt;) java.util.HashMap,V&gt; (implements java.lang.Cloneable, java.util.Map,V&gt;, java.io.Serializable) java.util....

Global site tag (gtag.js) - Google Analytics