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

歡迎訪問 生活随笔!

生活随笔

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

java

Java培训教程之对象的创建与使用

發布時間:2024/9/30 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java培训教程之对象的创建与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文小千分享Java面向對象中的對象創建與使用。類是對象的抽象,為對象定義了屬性和行為,但類本身既不帶任何數據,也不存在于內存空間中。而對象是類的一個具體存在,既擁有獨立的內存空間,也存在獨特的屬性和行為,屬性還可以隨著自身的行為而發生改變。接下來演示如何用類創建對象,創建對象之前,必須先聲明對象,其語法格式如下:

類名 對象名;

類是自定義類型,也是一種引用類型,因此該對象名是一個引用變量,默認值為null,表示不指向任何堆內存空間。接下來需要對該變量進行初始化,Java使用new關鍵字來創建對象,也稱實例化對象,其語法格式如下:

對象名 = new 類名();

上述示例中,使用new關鍵字在堆內存中創建類的對象,對象名引用此對象。聲明和實例化對象的過程可以簡化,其語法格式如下:

類名 對象名 = new 類名();

接下來演示創建Person類的實例對象,具體示例如下:

Person p = new Person();

上述示例中,“Person p”聲明了一個Person類型的引用變量,“new Person()”為對象在堆中分配內存空間,最終返回對象的引用并賦值給變量p,如圖4.1所示。

圖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所示。

圖4.2 例4-1運行結果

例4-1中,實例化了兩個Person對象,并通過“對象.屬性”的方式為成員變量賦值,通過“對象.方法”的方式調用成員方法。從運行結果可發現,變量p1、p2引用的對象同時調用了say()方法,但輸出結果卻不相同。這是因為用new創建對象時,會為每個對象開辟獨立的堆內存空間,用于保存對象成員變量的值。因此,對變量p1引用的對象屬性賦值并不會影響變量p2引用對象屬性的值。為了更好地理解,變量p1、p2引用對象的內存狀態如圖4.3所示。

圖4.3 對象的內存關系

例4-1中沒有為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 }

程序的運行結果如圖4.4所示。

圖4.4 例4-2運行結果

例4-3中,第16行代碼p2被賦值為p1后,會斷開原有引用的對象,而和p1引用同一對象。因此打印如圖4.6所示結果。此時,p2原有引用的對象不再被任何變量所引用,就成了垃圾對象,不能再被使用,只等待垃圾回收機制進行回收。垃圾產生的過程,如圖4.5所示。

圖4.5 垃圾對象的產生

圖4.5中,首先實例化兩個對象p1和p2,其次分別為p1和p2的屬性賦值,最后將p2從新賦值為p1,p2將斷開原有引用,此時被斷開引用的對象,也不被其他引用變量所引用,就成為垃圾空間,等待被回收。

希望以上的分享能幫到大家!本文來自千鋒教育,轉載請注明出處。

總結

以上是生活随笔為你收集整理的Java培训教程之对象的创建与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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