1. 程式人生 > >對Java中的物件、例項、控制代碼、直接指標的理解

對Java中的物件、例項、控制代碼、直接指標的理解

        虛擬機器在建立物件的時候,會優先查詢常量池中是否有該物件的例項,如果沒有則需要載入、解析、初始化class,然後分配記憶體,初始化記憶體,設定物件(HASH CODE 、 GC年代等),最後執行init才算是建立完物件。

        物件即例項。

        String str;

        以上的str就是一個控制代碼,但是並沒有指向任何物件,好比這是一個客服中心,告訴你打400號碼聯絡客服中心,但是沒有指明是哪個客服人員,如果String str = "9527";這個時候就是說明了編號9527為您服務,可以通過控制代碼訪問物件。

        直接指標,我理解的:

        class Test{

            public void doSth();

        }

        new Test().doSth();//直接指標

        Test() test = new Test();//控制代碼引用

        test.doSth();

        當然直接指標肯定是速度更快的,但是如果用控制代碼,物件被移動(比如GC),只需要改變指標而不會改變引用;如果是直接指標的方式,速度那是槓槓的,不用多餘的一次指標的定位。綜上,寫JVM多用直接指標,寫應用更多的是控制代碼。