`
cectsky
  • 浏览: 45746 次
  • 性别: 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编程中,`java.lang.IllegalArgumentException` 是一个标准的运行时异常,它通常表示一个方法接收到的参数值不在预期范围内或者不合法。当尝试将一个无法转换为日期的对象格式化时,就会抛出"Cannot format ...

    java.lang.runtimeexception unexpected subelement

    在Java编程中,`java.lang.RuntimeException` 是一个非检查异常(unchecked exception),它表示程序运行时出现的不正常情况。通常,这类异常是由于程序员的错误或代码逻辑的疏忽造成的,例如类型转换错误、空指针...

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

    Caused by: java.lang.RuntimeException: javax.management.remote.JMXServerErrorException: java.lang.AssertionError: Registered more than one instance with the same objectName : com.bea:Name=wl04,Type=...

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    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中异常分析

    - **异常路径**:`java.lang.Object -&gt; java.lang.Throwable -&gt; java.lang.Exception -&gt; java.lang.RuntimeException -&gt; java.lang.IndexOutOfBoundsException -&gt; java.lang.ArrayIndexOutOfBoundsException` ...

    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)...

    android java.lang.IllegalArgumentException contains a path separator

    在Android开发中,Java编程时常会遇到`java.lang.IllegalArgumentException`异常,这通常表示传入的参数不符合方法的要求。在本例中,错误信息“contains a path separator”提示我们问题可能与路径分隔符有关,这...

    java.lang.NoSuchMethodException: .getPortClassMap()

    在给出的标题 "java.lang.NoSuchMethodException: .getPortClassMap()" 中,异常指向了 `getPortClassMap()` 这个方法,暗示在程序运行时,尝试访问或调用的这个方法在相应的类中没有被找到。 `getPortClassMap` ...

    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开发-com.alibaba.fastjson.JSONObject

    `JSONObject`类是Fastjson库中的核心类之一,它代表了一个JSON对象。你可以通过它来创建、读取和修改JSON数据。以下是一些关于`JSONObject`的重要知识点: 1. 创建JSONObject:可以通过构造函数传入一个字符串、Map...

    java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder 处理

    总之,解决“java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder”问题的关键在于确保JDOM库被正确地包含在类路径中,同时检查代码中涉及的类名拼写是否准确。了解并熟练使用SAXBuilder可以帮助开发者...

    java源码阅读之java.lang.Object

    Java源码阅读之java.lang.Object Java中的Object类是所有类的父类,任何类都默认继承Object。Object类提供了多种方法,以下是其中一些重要的方法: 1. clone方法:保护方法,实现对象的浅复制,只有实现了...

    Java类库复习——java.lang.String

    在Java编程语言中,`java.lang.String`是最重要的类之一,它是所有字符串操作的基础。这个类位于核心类库中,因此无需显式导入即可使用。本文将深入探讨`String`类的一些关键知识点,包括它的特性、构造方法、常用...

    maven3.6.3资源包

    1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method 'void ()' not found at org.jetbrains.idea.maven.server.embedder....

    java.lang.Class类

    Java.lang.Class类 Java.lang.Class类是Java语言中一个非常重要的类,它封装了对象和接口的运行时状态。当Java程序在运行时,Java虚拟机(JVM)会对所有对象进行类型标识,这项信息记录了每个对象所属的类。Class类...

    java.lang.ClassCastException

    在Java编程中,`java.lang.ClassCastException`是一个运行时异常,通常发生在强制类型转换时,如果尝试将一个对象转换为其非兼容类型时就会抛出。这个异常表明在编译时可能成功的类型转换,在运行时被证明是错误的。...

Global site tag (gtag.js) - Google Analytics