日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

1.7 Java创建对象详解(显式创建和隐含创建)

發布時間:2025/3/20 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.7 Java创建对象详解(显式创建和隐含创建) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對象是對類的實例化。對象具有狀態和行為,變量用來表明對象的狀態,方法表明對象所具有的行為。Java 對象的生命周期包括創建、使用和清除,本文詳細介紹對象的創建,在 Java 語言中創建對象分顯式創建與隱含創建兩種情況。

顯式創建對象

對象的顯式創建方式有 4 種。

1. 使用 new 關鍵字創建對象

這是常用的創建對象的方法,語法格式如下:

類名 對象名 = new 類名()

2. 調用 java.lang.Class 或者 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() 方法創建對象。

3. 調用對象的 clone() 方法

該方法不常用,使用該方法創建對象時,要實例化的類必須繼承 java.lang.Cloneable 接口。 調用對象的 clone() 方法創建對象的語法格式如下:

類名對象名 = (類名)已創建好的類對象名.clone();

4. 調用 java.io.ObjectlnputStream 對象的 readObject() 方法

例 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 虛擬機自帶的垃圾回收機制處理。

總結

以上是生活随笔為你收集整理的1.7 Java创建对象详解(显式创建和隐含创建)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。