面向對象基礎-創(chuàng)新互聯(lián)

對象的內存圖: 類在哪里存放?

成都創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比齊河網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式齊河網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋齊河地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

左側程序的運行方式解釋:首先是有一個Car類和 Test類,?Car類中存放的是該類的屬性和方法,當Test.class加載到方法區(qū)之后開始加載main方法,此時Car.class也加載到方法區(qū)中 隨之的還有成員變量name和price,還有成員方法,在主方法中,當創(chuàng)建car1對象時,他會現(xiàn)在棧中開辟一個c1的對象,然后當new這個對象的時候,會在堆內存中再開辟一塊空間,這個空間里存放的就是該類的屬性和方法成員的引用地址,而引用地址就是成員方法在方法區(qū)中的地址,最后會將堆內存中的對象空間的地址賦值給棧內存中的c1。

那如果是兩個變量指向同一對象的情況呢?

當執(zhí)行完 Student s2 = s1這個語句的時候,棧內存中會開辟一個s2空間指向s1空間中記錄地址的堆內存中的對象空間,因此此時當用s2來修改內容的時候s1中的內容也會被修改因為這兩個對象指向的是同一片空間。?

P.s: Java存在自動垃圾回收器,當s1和s2為null的時候,此時堆內存中的對象就沒有值也就沒有用了,此時java會自動將其清理掉。

構造器

構造器的作用:

無參數(shù)構造器(默認存在的):初始化對象時,成員變量的數(shù)據(jù)均采用默認值。初始化對象屬性,例如String類型的就為null,Int類型的為0..... 有參數(shù)構造器:在初始化對象的時候,同時可以接收參數(shù)為對象進行賦值。

細節(jié):當你定義一個類時,java會默認自帶無參構造器,但是當你寫了有參構造器但是沒寫無參構造器時會報錯,因為?有參構造器會覆蓋無參構造器,這個時候就要自己手動去寫一個無參構造了。

this關鍵字

this可以出現(xiàn)在構造器和成員方法中

this的作用:代表當前對象的地址,誰調用的方法用的就是誰的地址。

l 可以用于指定訪問當前對象的成員變量、成員方法。大的作用就是區(qū)分同名變量,例如你在方法中傳遞參數(shù)的參數(shù)名與你類中的變量名相同,但是這個時候你想將參數(shù)傳遞給對象的屬性,但是此時他會因為變量名對參數(shù)本身進行訪問。

例如:

public Car(String name,double price)
{
    price = price;
    name = name;
}

此時你如果想通過構造器來給對象屬性賦值的話 就會出現(xiàn)下面這種情況

Car c = new Car("奔馳",45);

因為在這個構造方法中,因為就近原則因此傳遞進來的price不會賦值給類中屬性的price,他只會自己訪問自己一邊,因此test中打印類中屬性為默認值。因此我們如果想得到傳進來的值應該這樣修改代碼。

public Car(String name,double price)
{
    this.price = price;
    this.name = name;
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網頁題目:面向對象基礎-創(chuàng)新互聯(lián)
當前URL:http://muchs.cn/article12/coedgc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、營銷型網站建設、網站營銷服務器托管、云服務器網站策劃

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)