Java的基类Object详解

Java的JDK文档要经常查阅使用,最好查看英文的文档。

Oracle官方在线 Java API Specifications

http://www.oracle.com/technetwork/java/api-141528.html


  1. java.lang.Object 类,java.lang包在使用的时候无需显示导入,编译时由编译器自动帮助我们导入。

  2. API(Application Programinga Interface),应用编程接口。

  3. Object obj = new Object();

    System.out.println(obj);

    System.out.println(obj.toString());

    上面打印的两个内容一样。当打印引用时,实际上会打印出引用所指向对象的 toString()方法的返回值,因为每个类都直接或间接的继承自Object,而Object类中定义了 toString(),因此每个类都有 toString()这个方法。

  4. String str = "aaa";

    System.out.println(str);

    System.out.println(str.toString());

    两个输出内容都为 aaa,按照上面的理解,Sting一定重写了Object的 toString()方法。

  5. 当打印一个引用对象时,会显示例如:java.lang.Object@c17164。为什么会打印这么一个串呢?我们通过查看Object类的toString()方法就可以知道。

public String toString()
Returns a string representation of the object. In general, the toString method returns 
a string that "textually represents" this object. The result should be a concise 
but informative representation that is easy for a person to read. It is recommended 
that all subclasses override this method.
The toString method for class Object returns a string consisting of the name of 
the class of which the object is an instance, the at-sign character `@', and the unsigned
 hexadecimal representation of the hash code of the object. In other words, 
 this method returns a string equal to the value of:
    getClass().getName() + '@' + Integer.toHexString(hashCode()) 
Returns:
    a string representation of the object.

java.lang.Object@c17164    类名+@+地址的十六进制表示形式

6. 关于进制的表示,16进制,逢16进一,16进制的数字包括:0~9,A,B,C,D,E,F