成員變量/局部變量
1.定義位置不同,成員變量定義在類里,局部變量定義在類的方法里。
來自網(wǎng)絡(luò)
2.成員變量中,其中類變量從該類的準(zhǔn)備階段起開始存在,直到系統(tǒng)完全銷毀這個類,類變量的作用域與這個類的生存范圍相同,一個類在使用之前要經(jīng)過類加載、類驗證、類準(zhǔn)備、類解析、 類初始化等幾個階段;而實例變量則從該類的實例被創(chuàng)建起開始存在,直到系統(tǒng)完全銷毀這個實例,實例變量的作用域與對應(yīng)實例的生存范圍相同。
正是基于這個原因,可以把類變量和實例變量統(tǒng)稱為成員變量,其中類變量可以理解為類成員變量,它作為類本身的一個成員,與類本身共存亡;實例變量則可理解為實例成員變量,它作為實例的一個成員,與實例共存亡。
3.關(guān)于初始化,成員變量無須顯式初始化,只要為一個類定義了類變量或?qū)嵗兞?,系統(tǒng)就會在這個類的準(zhǔn)備階段或創(chuàng)建該類的實例時進行默認初始化,成員變量默認初始化時的賦值規(guī)則與數(shù)組動態(tài)初始化時數(shù)組元素的賦值規(guī)則完全相同。
4.局部變量根據(jù)定義形式的不同,又可以被分為如下三種:
–形參:在定義方法簽名時定義的變量,形參的作用域在整個方法內(nèi)有效。當(dāng)通過類或?qū)ο笳{(diào)用某個方法時,系統(tǒng)會在該方法棧區(qū)內(nèi)為所有的形參分配內(nèi)存空間,并將實參的值賦給對應(yīng)的形參,這就完成了形參的初始化。
–方法局部變量:在方法體內(nèi)定義的局部變量,它的作用域是從定義該變量的地方生效,到該方法結(jié)束時失效。
–代碼塊局部變量:在代碼塊中定義的局部變量,這個局部變量的作用域從定義該變量的地方生效,到該代碼塊結(jié)束時失效。
與成員變量不同的是,局部變量除形參之外,都必須顯式初始化。也就是說,必須先給方法局部變量和代碼塊局部變量指定初始值,否則不可以訪問它們。
變量的使用規(guī)則:
對Java初學(xué)者而言,何時應(yīng)該使用類變量?何時應(yīng)該使用實例變量?何時應(yīng)該使用方法局部變量?何時應(yīng)該使用代碼塊局部變量?
這種選擇比較困難,如果僅就程序的運行結(jié)果來看,大部分時候都可以直接使用類變量或者實例變量來解決問題,無須使用局部變量。但實際上這種做法相當(dāng)錯誤,因為定義一個成員變量時,成員變量將被放置到堆內(nèi)存中,成員變量的作用域?qū)U大到類存在范圍或者對象存在范圍,這種范圍的擴大有兩個害處。
1.增大了變量的生存時間,這將導(dǎo)致更大的內(nèi)存開銷。
2.擴大了變量的作用域,這不利于提高程序的內(nèi)聚性。
局部變量有應(yīng)用場景,成員變量呢?如果有如下幾種情形,則應(yīng)該考慮使用成員變量:
1.如果需要定義的變量是用于描述某個類或某個對象的固有信息的,例如人的身高、體重等信息,是人對象的固有信息,每個人對象都具有這些信息。這種變量應(yīng)該定義為成員變量。
再進一步,如果這種信息對這個類的所有實例完全相同,或者說它是類相關(guān)的,例如人類的眼睛數(shù)量,目前所有人的眼睛數(shù)量都是2,如果人類進化了,變成了3個眼睛,則所有人的眼睛數(shù)量都是3, 這種類相關(guān)的信息應(yīng)該定義成類變量;
如果這種信息是實例相關(guān)的,例如人的身高、體重等,每個人實例的身高、體重可能互不相同,這種信息是實例相關(guān)的,因此應(yīng)該定義成實例變量。
2.如果在某個類中需要以一個變量來保存該類或者實例運行時的狀態(tài)信息,例如五子棋程序中的棋盤數(shù)組,用以保存五子棋實例運行時的狀態(tài)信息。這種用于保存某個類或某個實例狀態(tài)信息的變量通常應(yīng)該使用成員變量。
3.如果某個信息需要在某個類的多個方法之間進行共享,則這個信息應(yīng)該使用成員變量來保存。例如,在把浮點數(shù)轉(zhuǎn)換為人民幣讀法字符串,數(shù)字的大寫字符和單位字符等是多個方法的共享信息,因此應(yīng)設(shè)置為成員變量。
即使在程序中使用局部變量,也應(yīng)該盡可能地縮小局部變量的作用范圍,局部變量的作用范圍越小,它在內(nèi)存里停留的時間就越短, 程序運行性能就越好。因此,能用代碼塊局部變量的地方,就堅決不要使用方法局部變量。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱:java成員變量/局部變量2023017-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://muchs.cn/article44/iheee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站收錄、ChatGPT、電子商務(wù)、手機網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容