java成員變量/局部變量2023017-創(chuàng)新互聯(lián)

成員變量/局部變量
1.定義位置不同,成員變量定義在類里,局部變量定義在類的方法里。
來(lái)自網(wǎng)絡(luò)在這里插入圖片描述
2.成員變量中,其中類變量從該類的準(zhǔn)備階段起開始存在,直到系統(tǒng)完全銷毀這個(gè)類,類變量的作用域與這個(gè)類的生存范圍相同,一個(gè)類在使用之前要經(jīng)過(guò)類加載、類驗(yàn)證、類準(zhǔn)備、類解析、 類初始化等幾個(gè)階段;而實(shí)例變量則從該類的實(shí)例被創(chuàng)建起開始存在,直到系統(tǒng)完全銷毀這個(gè)實(shí)例,實(shí)例變量的作用域與對(duì)應(yīng)實(shí)例的生存范圍相同。
正是基于這個(gè)原因,可以把類變量和實(shí)例變量統(tǒng)稱為成員變量,其中類變量可以理解為類成員變量,它作為類本身的一個(gè)成員,與類本身共存亡;實(shí)例變量則可理解為實(shí)例成員變量,它作為實(shí)例的一個(gè)成員,與實(shí)例共存亡。
3.關(guān)于初始化,成員變量無(wú)須顯式初始化,只要為一個(gè)類定義了類變量或?qū)嵗兞?,系統(tǒng)就會(huì)在這個(gè)類的準(zhǔn)備階段或創(chuàng)建該類的實(shí)例時(shí)進(jìn)行默認(rèn)初始化,成員變量默認(rèn)初始化時(shí)的賦值規(guī)則與數(shù)組動(dòng)態(tài)初始化時(shí)數(shù)組元素的賦值規(guī)則完全相同。
4.局部變量根據(jù)定義形式的不同,又可以被分為如下三種:
–形參:在定義方法簽名時(shí)定義的變量,形參的作用域在整個(gè)方法內(nèi)有效。當(dāng)通過(guò)類或?qū)ο笳{(diào)用某個(gè)方法時(shí),系統(tǒng)會(huì)在該方法棧區(qū)內(nèi)為所有的形參分配內(nèi)存空間,并將實(shí)參的值賦給對(duì)應(yīng)的形參,這就完成了形參的初始化。
–方法局部變量:在方法體內(nèi)定義的局部變量,它的作用域是從定義該變量的地方生效,到該方法結(jié)束時(shí)失效。
–代碼塊局部變量:在代碼塊中定義的局部變量,這個(gè)局部變量的作用域從定義該變量的地方生效,到該代碼塊結(jié)束時(shí)失效。
與成員變量不同的是,局部變量除形參之外,都必須顯式初始化。也就是說(shuō),必須先給方法局部變量和代碼塊局部變量指定初始值,否則不可以訪問(wèn)它們。
在這里插入圖片描述
變量的使用規(guī)則:
對(duì)Java初學(xué)者而言,何時(shí)應(yīng)該使用類變量?何時(shí)應(yīng)該使用實(shí)例變量?何時(shí)應(yīng)該使用方法局部變量?何時(shí)應(yīng)該使用代碼塊局部變量?
這種選擇比較困難,如果僅就程序的運(yùn)行結(jié)果來(lái)看,大部分時(shí)候都可以直接使用類變量或者實(shí)例變量來(lái)解決問(wèn)題,無(wú)須使用局部變量。但實(shí)際上這種做法相當(dāng)錯(cuò)誤,因?yàn)槎x一個(gè)成員變量時(shí),成員變量將被放置到堆內(nèi)存中,成員變量的作用域?qū)U(kuò)大到類存在范圍或者對(duì)象存在范圍,這種范圍的擴(kuò)大有兩個(gè)害處。
1.增大了變量的生存時(shí)間,這將導(dǎo)致更大的內(nèi)存開銷。
2.擴(kuò)大了變量的作用域,這不利于提高程序的內(nèi)聚性。

成都創(chuàng)新互聯(lián)公司專注于做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營(yíng)銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

局部變量有應(yīng)用場(chǎng)景,成員變量呢?如果有如下幾種情形,則應(yīng)該考慮使用成員變量:
1.如果需要定義的變量是用于描述某個(gè)類或某個(gè)對(duì)象的固有信息的,例如人的身高、體重等信息,是人對(duì)象的固有信息,每個(gè)人對(duì)象都具有這些信息。這種變量應(yīng)該定義為成員變量。
再進(jìn)一步,如果這種信息對(duì)這個(gè)類的所有實(shí)例完全相同,或者說(shuō)它是類相關(guān)的,例如人類的眼睛數(shù)量,目前所有人的眼睛數(shù)量都是2,如果人類進(jìn)化了,變成了3個(gè)眼睛,則所有人的眼睛數(shù)量都是3, 這種類相關(guān)的信息應(yīng)該定義成類變量;
如果這種信息是實(shí)例相關(guān)的,例如人的身高、體重等,每個(gè)人實(shí)例的身高、體重可能互不相同,這種信息是實(shí)例相關(guān)的,因此應(yīng)該定義成實(shí)例變量。
2.如果在某個(gè)類中需要以一個(gè)變量來(lái)保存該類或者實(shí)例運(yùn)行時(shí)的狀態(tài)信息,例如五子棋程序中的棋盤數(shù)組,用以保存五子棋實(shí)例運(yùn)行時(shí)的狀態(tài)信息。這種用于保存某個(gè)類或某個(gè)實(shí)例狀態(tài)信息的變量通常應(yīng)該使用成員變量。
3.如果某個(gè)信息需要在某個(gè)類的多個(gè)方法之間進(jìn)行共享,則這個(gè)信息應(yīng)該使用成員變量來(lái)保存。例如,在把浮點(diǎn)數(shù)轉(zhuǎn)換為人民幣讀法字符串,數(shù)字的大寫字符和單位字符等是多個(gè)方法的共享信息,因此應(yīng)設(shè)置為成員變量。
即使在程序中使用局部變量,也應(yīng)該盡可能地縮小局部變量的作用范圍,局部變量的作用范圍越小,它在內(nèi)存里停留的時(shí)間就越短, 程序運(yùn)行性能就越好。因此,能用代碼塊局部變量的地方,就堅(jiān)決不要使用方法局部變量。

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

文章名稱:java成員變量/局部變量2023017-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.bm7419.com/article44/iheee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站收錄、ChatGPT、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、小程序開發(fā)

廣告

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

成都定制網(wǎng)站建設(shè)