㈠ java 實例化對象
Object[] obj=new Object[10];你可以試試 for(int i=0;i<10;i++) System.out.println(obj[i]);全部輸出null.說明沒有創建實例。
先解釋:我是一樓的哈,再次給你充點虛擬機知識:在JVM虛擬機里,new關鍵字如同C的 malloc函數。new Object();表示直接對Object類型開辟一個空間,包括的內存空間有:非static成員變數(方法和靜態成員在靜態內存區)+其他初始化空間。
例如:class Test{ private int a; public List list; public void aaa(){} }創建實例new Test()則開辟a(4位元組)+list指針(Java叫對象引用,這時只是一個null)+其他使用空間。
同樣:Test[] t=new Test[100];只開辟了100個連續的對象引用地址。這些地址的指向是null.就就是他們都是沒有實際內容的對象(null,沒有實例化。)如圖:
0x10000000 --------> t[0x10000004,0x10000008...]
0x10000004 --------> NULL
0x10000008 --------> NULL
......
所以:我上面的循環輸出數組全部是null。
這表示在創建數組時,並未為每個元素分配實際的對象實例,而是分配了相應的內存空間,但這些空間的值都是null。只有當使用new關鍵字為每個數組元素創建實例後,它們才會指向實際的對象。
例如:for(int i=0;i<10;i++) obj[i]=new Object();這樣,每個obj[i]都會指向一個實際的Object實例,循環輸出時就不會全是null了。
總結:在創建數組時,若未為每個數組元素賦值為實際對象,它們的值將為null。使用new關鍵字為每個元素創建實例,才能真正實例化對象。
理解這一點有助於更好地掌握Java中的對象創建和引用機制。希望這些信息對你有所幫助。
㈡ java對象實例化的幾種方法
1、用new語句創建對象,這是最常見的創建對象的方法。
2、通過工廠方法返回對象,如:String str = String.valueOf(23);
3、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、調用對象的clone()方法。
5、通過I/O流(包括反序列化),如運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。
㈢ java中實例和對象有什麼區別
對象的名字看你怎麼理解,我們有時以變數名也就是對象的引用名稱之, 以特指這個變數的對象,有時我們以其所屬類名稱之,以泛指所有相關的對象,此時與類對象只有一個 類 字之差
java中萬物皆對象,實例是其中一種對象的稱呼,
相當於從「模板」(類)中創造出實際的「物品」(對象),我們說這個對象是這個類的實例
比如Person p=new Person()
這里的對象叫實例對象,這里的對象相當於實際的「物品」,他是從「模板」中創造的,未必是new出來的,只要符合這個原則就是實例
比如Class p=Person.class
這里的對象叫類對象,因為類相當於「模板」,並不是new Person()這種實際的「物品」