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()); } }