Object和Class類與JVM啓動

rt.jar包含java.*;javax.*;org.*,J2SE的API公開接口的一部分,與操做系統無關;java

public final class Class<T>數組

extends Object函數

implements Serializable, GenericDeclaration, Type, AnnotatedElementspa

Class 類的實例表示正在運行的 Java 應用程序中的類和接口。枚舉是一種類,註釋是一種接口。每一個數組屬於被映射爲 Class 對象的一個類,全部具備相同元素類型和維數的數組都共享該 Class 對象。基本的 Java 類型(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也表示爲 Class 對象。 操作系統

Class 沒有公共構造方法。Class 對象是在加載類時由 Java 虛擬機以及經過調用類加載器中的 defineClass 方法自動構造的。 .net

如下示例使用 Class 對象來顯示對象的類名: 
     void printClassName(Object obj) {
         System.out.println("The class of " + obj +
                            " is " + obj.getClass().getName());
     }
還能夠使用一個類字面值(JLS Section 15.8.2)來獲取指定類型(或 void)的 Class 對象。例如: 
     System.out.println("The name of class Foo is: "+Foo.class.getName());prototype

public class Object設計

類 Object 是類層次結構的根類。每一個類都使用 Object 做爲超類。全部對象(包括數組)都實現這個類的方法。code

 

Object與Class類的關係,由哪一個ClassLoader加載,哪一個先初始化?對象

//加載一個類,首先要將磁盤中的class文件載入JVM方法區中,還要在堆中建立該class的Class對象
//一個類,編譯完成後,在生成的.class文件中,就會產生一個Class對象,用於表示這個類的類型信息
//獲取Class實例的方式
//調用Object類的getClass()方法
//Class類的靜態方法forName();問題:Class也是Class的實例怎麼理解
//使用 .class;基本類型包裝類還有 .TYPE .BYTES 
//獲取一個類的ClassLoader

問題:.class是屬性仍是操做符

class是Java關鍵字,不可能做爲標識符,因此不多是屬性,.class做爲一個操做符。

參考博客:http://blog.csdn.net/wangtaomtk/article/details/52267666

建立兩個子類對象,須要建立兩個父類對象,仍是隻有一個父類對象存在?

JavaScript中的原型設計和Java中的繼承設計

JavaScript中爲構造函數的prototype屬性賦值,則使用該函數建立的對象中都有一個___proto__引用指向prototype指向的對象,多個對象共享一個原型對象

而Java中建立一個子類的兩個實例,父類實例會被建立兩次,例如,

class Person{}

class Student{}

class Demo{
    public static void main(){
        Student stu1 = new Student();
        Student stu2 = new Student();
        System.out.println(stu1.super.hashcode());
        System.out.println(stu2.super.hashcode());
    }

}
相關文章
相關標籤/搜索