您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java如何創建對象,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
對象的顯式創建方式有 4 種。
這是常用的創建對象的方法,語法格式如下:
類名 對象名 = new 類名();
或者 java.lang.reflect.Constuctor 類的 newlnstance() 實例方法
在 Java 中,可以使用 java.lang.Class 或者 java.lang.reflect.Constuctor 類的 newlnstance() 實例方法來創建對象,代碼格式如下:
java.lang.Class Class 類對象名稱 = java.lang.Class.forName(要實例化的類全稱); 類名 對象名 = (類名)Class類對象名稱.newInstance();
調用 java.lang.Class
類中的 forName()
方法時,需要將要實例化的類的全稱(比如 com.mxl.package.Student
)作為參數傳遞過去,然后再調用 java.lang.Class
類對象的 newInstance()
方法創建對象。
該方法不常用,使用該方法創建對象時,要實例化的類必須繼承 java.lang.Cloneable 接口。 調用對象的 clone() 方法創建對象的語法格式如下:
類名對象名 = (類名)已創建好的類對象名.clone();
例 1:
下面創建一個示例演示常用的前三種對象創建方法。示例代碼如下:
public class Student implements Cloneable { // 實現 Cloneable 接口 private String Name; // 學生名字 private int age; // 學生年齡 public Student(String name,int age) { // 構造方法 this.Name = name; this.age = age; } public Student() { this.Name = "name"; this.age = 0; } public String toString() { return"學生名字:"+Name+",年齡:"+age; } public static void main(String[] args)throws Exception { System.out.println("---------使用 new 關鍵字創建對象---------"); // 使用new關鍵字創建對象 Student student1 = new Student("小劉",22); System.out.println(student1); System.out.println("-----------調用 java.lang.Class 的 newInstance() 方法創建對象-----------"); // 調用 java.lang.Class 的 newInstance() 方法創建對象 Class c1 = Class.forName("Student"); Student student2 = (Student)c1.newInstance(); System.out.println(student2); System.out.println("-------------------調用對象的 clone() 方法創建對象----------"); // 調用對象的 clone() 方法創建對象 Student student3 = (Student)student2.clone(); System.out.println(student3); } }
對上述示例的說明如下:
使用 new
關鍵字或 Class
對象的 newInstance()
方法創建對象時,都會調用類的構造方法。
使用 Class
類的 newInstance()
方法創建對象時,會調用類的默認構造方法,即無參構造方法。
使用 Object
類的 clone()
方法創建對象時,不會調用類的構造方法,它會創建一個復制的對象,這個對象和原來的對象具有不同的內存地址,但它們的屬性值相同。
如果類沒有實現 Cloneable
接口,則 clone
。方法會拋出 java.lang.CloneNotSupportedException
異常,所以應該讓類實現 Cloneable
接口。
程序執行結果如下:
---------使用 new 關鍵字創建對象---------
學生名字:小劉,年齡:22
-----------調用 java.lang.Class 的 newInstance() 方法創建對象-----------
學生名字:name,年齡:0
-------------------調用對象的done()方法創建對象----------
學生名字:name,年齡:0
除了顯式創建對象以外,在 Java
程序中還可以隱含地創建對象,例如下面幾種情況。
1)String strName = "strValue",
其中的“strValue
”就是一個 String
對象,由 Java
虛擬機隱含地創建。
2)字符串的“+”運算符運算的結果為一個新的 String 對象,示例如下:
String str1 = "Hello"; String str2 = "Java"; String str3 = str1+str2; // str3引用一個新的String對象
3)當 Java
虛擬機加載一個類時,會隱含地創建描述這個類的 Class
實例。
提示:類的加載是指把類的 .class
文件中的二進制數據讀入內存中,把它存放在運行時數據區的方法區內,然后在堆區創建一個 java.lang.Class
對象,用來封裝類在方法區內的數據結構。
無論釆用哪種方式創建對象,Java 虛擬機在創建一個對象時都包含以下步驟:
給對象分配內存。
將對象的實例變量自動初始化為其變量類型的默認值。
初始化對象,給實例變量賦予正確的初始值。
注意:每個對象都是相互獨立的,在內存中占有獨立的內存地址,并且每個對象都具有自己的生命周期,當一個對象的生命周期結束時,對象就變成了垃圾,由 Java 虛擬機自帶的垃圾回收機制處理。
關于“Java如何創建對象”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。