java中new
Ⅰ java里的new到底是什麼意思
java里的new的英文意思就是"新的"的意思。在JAVA里就是創建一個新的實例,或者說一個新的對象,一個普通類在沒有實例化之前,就是new之前,它的屬性,方法等等在內存中都是不存在的。只有使用new了以後,這個類的一些東西在內存中才會真的存在,也就是說只有new了之後,這個類才能用。
舉例說明:
Java中使用 new關鍵字 加上 構造方法,來創建一個對象,下面是一個名為Cat的類,public class Cat { public Cat() { System.out.println("這是構造方法"); }}使用new + 構造方法 來創建一個對象。
那麼也就是Cat c = new Cat();前半部分,Cat c 的意思是,在內存中分配一個變數,名字叫c,這個變數是Cat類型的;後半部分,new Cat(); 這就是new關鍵字和構造方法來創建一個對象,Cat()是構造方法的名字。
想造出一個對象來,需要運用;new Cat(); 說明 new這個Cat類的一個對象,程序運行的時候,會調用構造方法Cat(),等這個構造方法執行完了,這個Cat類型的對象也就造出來了,真正的出現在內存當中了。
使用new關鍵字造出來的對象,被分配在內存的堆區(heap),而且等這個對象真正出來之後,還會做一件重要的事情:new關鍵字創建出一個對象之後,會把這個對象在內存中的地址返回,通過這個地址就可以找到這個對象。
那麼上面的寫法,Cat c = new Cat();意思就是說,把這個對象在內存中的地址 賦值 給變數c,這就是Java中引用概念,c就叫做引用,或者叫引用變數,或者直接叫變數,沒問題,都是它;c的值就是一個內存地址,或者叫引用地址。
通過這個地址,就可以准確的找到剛才創建出來的對象,以後我們要使用這個對象做一些事情,調用此對象的方法什麼的,都用過這個引用。
(1)java中new擴展閱讀
創建一個對象並將其賦值給一個引用變數:
Point originOne= new Point(23, 94);
Rectangle rectOne= new Rectangle(originOne, 100, 200);
Rectangle rectTwo= new Rectangle(50, 100);
第一行創建了一個Point類的對象,第二個和第三個線創建一個Rectangle矩形類的對象。
這些陳述中的每一個都有三個部分(詳細討論):
聲明Declaration:粗體代碼是將變數名稱與對象類型關聯的變數聲明。
實例化Instantiating:new關鍵字是一個java運算符,它用來創建對象。
初始化Initialization:new運算符,隨後調用構造函數,初始化新創建的對象。
聲明一個變數來指向一個對象,即引用
在此之前,要聲明一個變數,需要寫:type name
這將告訴編譯器將使用name引用一個type類型的對象。用一個原始變數,這個聲明也保留了適當的內存量的變數。
你也可以在自己的行上聲明一個引用變數。例如:
Point originone;
如果只是聲明一個像originone這樣的引用變數,其價值將待定,直到有一個對象真正被創造和分配給它。只是簡單地聲明一個引用變數而並沒有創建一個對象。
對於這樣,需要使用new運算符。在代碼中使用它之前,必須指定一個對象給originone。否則,會得到一個編譯器錯誤-----空指針異常。
處於這種狀態的變數,目前沒有引用任何的對象,可以說明如下(變數名,originone,一個引用沒指向任何對象)。
實例化一個類對象:
new運算符實例化一個類對象,通過給這個對象分配內存並返回一個指向該內存的引用。new運算符也調用了對象的構造函數。
注意:實例化一個類的對象的意思就是創建對象。創建對象時,正在創造一個類的實例,因而實例化一個類的對象。
new運算符需要一個單一的,後綴參數,需要調用構造函數。構造函數的名稱提供了需要實例化類的名稱。
new運算符返回它所創建的對象的引用。此引用通常被分配給一個合適的類型的變數,如:Point originone =newPoint(23,94);
由new運算符返回的引用可以不需要被賦值給變數。它也可以直接使用在一個表達式中。
Ⅱ java中用new定義對象有幾種寫法
java中用new定義對象有3種寫法。
1.使用new關鍵字
通過這種方式,我們可以調用任意的構造函數(無參的和帶參數的)。
<span style="color: #ff0000;">Employee emp1 = newEmployee();</span> 0: new#19// class org/programming/mitra/exercises/Employee: p: invokespecial #21// Method org/programming/mitra/exercises/Employee."":()V
2.使用Class類的newInstance方法
我們也可以使用Class類的newInstance方法創建對象。這個newInstance方法調用無參的構造函數創建對象。
我們可以通過下面方式調用newInstance方法創建對象:
<span style="color: #ff0000;">Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance();</span>
3.使用反序列化
當我們序列化和反序列化一個對象,jvm會給我們創建一個單獨的對象。在反序列化時,jvm創建對象並不會調用任何構造函數。為了反序列化一個對象,我們需要讓我們的類實現Serializable介面 。
<span style="color: #ff0000;">ObjectInputStream in = newObjectInputStream(newFileInputStream("data.obj"));Employee emp5 = (Employee) in.readObject();</span>Ⅲ JAVA中方法前加new是什麼意思
new的作用是實例化。
比如有一種類叫狗類,你要創造一隻阿黃,你就得這么創造:
狗類 阿黃=new 狗類();
這句話的意思是聲明,阿黃是屬於狗類這種類的,同時他的名字叫阿黃。
在JAVA語言中,new是實例化,你也可以理解為創造,從一種類中創造出一個真實的個體。