首頁 > 運動

Java技術教程之物件的建立與使用

由 指尖上的程式碼 發表于 運動2021-07-03

簡介接下來經過一個案例來學習訪問物件的成員變數和呼叫物件的成員辦法,如例4-1所示

java怎麼建立一個物件

千鋒java技術培訓教師分享java面向物件中的物件創立與運用。類是物件的籠統,為物件定義了屬性和行為,但類自身既不帶任何資料,也不存在於記憶體空間中。而物件是類的一個詳細存在,既具有獨立的記憶體空間,也存在共同的屬性和行為,屬性還能夠隨著本身的行為而發作改動。接下來演示如何用類創立物件,創立物件之前,必需先宣告物件,其語法格式如下:

類名 物件名;

類是自定義型別,也是一種援用型別,因而該物件名是一個援用變數,默許值為null,表示不指向任何堆記憶體空間。接下來需求對該變數停止初始化,Java運用new關鍵字來創立物件,也稱例項化物件,其語法格式如下:

物件名 = new 類名();

上述示例中,運用new關鍵字在堆記憶體中創立類的物件,物件名援用此物件。宣告和例項化物件的過程能夠簡化,其語法格式如下:

類名 物件名 = new 類名();

接下來演示創立Person類的例項物件,詳細示例如下:

Person p = new Person();

上述示例中,“Person p”聲明瞭一個Person型別的援用變數,“new Person()”為物件在堆中分配記憶體空間,最終返回物件的援用並賦值給變數p,如圖4。1所示。

Java技術教程之物件的建立與使用

圖4。1 物件p在記憶體中的表示圖

物件例項化後,就能夠訪問物件的成員變數和成員辦法,其語法格式如下:

物件名。成員變數;

物件名。成員辦法();

接下來經過一個案例來學習訪問物件的成員變數和呼叫物件的成員辦法,如例4-1所示。

例4-1 TestPersonDemo。java

1 class Person {

2 String name; // 宣告姓名屬性

3 int age; // 宣告年齡屬性

4 public void say() { // 定義顯現資訊的辦法

5 System。out。println(“姓名:”+name+“,年齡:”+age);

6 }

7 }

8 public class TestPersonDemo {

9 public static void main(String[] args) {

10 Person p1 = new Person(); // 例項化第一個Person物件

11 Person p2 = new Person(); // 例項化第二個Person物件

12 p1。name = “張三”; // 為name屬性賦值

13 p1。age = 18; // 為age屬性賦值

14 p1。say(); // 呼叫物件的辦法

15 p2。say();

16 }

17 }

程式的運轉結果如圖4。2所示。

Java技術教程之物件的建立與使用

例項化了兩個Person物件,並經過“物件。屬性”的方式為成員變數賦值,經過“物件。辦法”的方式呼叫成員辦法。從運轉結果可發現,變數p1、p2援用的物件同時呼叫了say()辦法,但輸出結果卻不相同。這是由於用new創立物件時,會為每個物件開拓獨立的堆記憶體空間,用於保管物件成員變數的值。因而,對變數p1援用的物件屬性賦值並不會影響變數p2援用物件屬性的值。為了更好天文解,變數p1、p2援用物件的記憶體狀態如圖4。3所示。

Java技術教程之物件的建立與使用

物件的記憶體關係

例如圖中沒有為p2物件的成員變數賦值,但從圖4。3中可發現,p2物件的name值為null,age值為0。這是由於在例項化物件時,Java虛擬時機自動為成員變數停止初始化,依據成員變數的型別賦相對應的初始值。

另外,需要我們留意的是,一個物件能被多個變數所援用,當物件不被任何變數所援用時,該物件就會成為渣滓,不能再被運用。接下來演示渣滓是如何產生的,如例4-2所示。

例4-2 TestObjectRef。java

1 class Person {

2 String name; // 宣告姓名屬性

3 int age; // 宣告年齡屬性

4 public void say() { // 定義顯現資訊的辦法

5 System。out。println(“姓名:”+name+“,年齡:”+age);

6 }

7 }

8 public class TestObjectRef {

9 public static void main(String[] args) {

10 Person p1 = new Person(); // 例項化第一個Person物件

11 Person p2 = new Person(); // 例項化第二個Person物件

12 p1。name = “張三”; // 為p1物件name屬性賦值

13 p1。age = 18; // 為p1物件age屬性賦值

14 p2。name = “李四”; // 為p2物件name屬性賦值

15 p2。age = 28; // 為p2物件age屬性賦值

16 p2 = p1; // 將p1物件傳送給p2物件

17 p1。say(); // 呼叫物件的辦法

18 p2。say();

19 }

20 }

程式的運轉結果如圖所示。

Java技術教程之物件的建立與使用

例圖中,第16行程式碼p2被賦值為p1後,會斷開原有援用的物件,而和p1援用同一物件。因而列印如圖4。6所示結果。此時,p2原有援用的物件不再被任何變數所援用,就成了渣滓物件,不能再被運用,只等候渣滓回收機制停止回收。渣滓產生的過程,如圖4。5所示。

Java技術教程之物件的建立與使用

圖上圖中,首先例項化兩個物件p1和p2,其次分別為p1和p2的屬性賦值,最後將p2重新賦值為p1,p2將斷開原有援用,此時被斷開援用的物件,也不被其他援用變數所援用,就成為渣滓空間,等候被回收。

想要學習java技術開發,能夠參考千鋒提供的java學習路線,這個Java學習路線羅列了各階段完好的java學習技術問題,依據千鋒提供的java學習路線圖,能夠讓你對學好java技術開發需求控制的學問有個明晰的理解,並能快速入門java開發。

Tags:物件personP2P1援用