更新時間:2018-07-25 來源:黑馬程序員JavaEE培訓學院 瀏覽量:
成員變量:在類范圍里定義的變量。成員變量又分為實例屬性(不用static修飾)和類屬性(用static修飾)。類屬性和實例屬性統(tǒng)稱為成員變量。
類屬性在類的準備階段開始存在,直到系統(tǒng)銷毀這個類,類屬性與類的生存范圍相同。實例屬性從類的實例被創(chuàng)建開始存在,直到系統(tǒng)銷毀這個實例,實例屬性與對應實例生存范圍相同。
成員變量無須顯式初始化,只要定義了類屬性和實例屬性,則系統(tǒng)會在這個類的準備階段或創(chuàng)建類的實例時進行默認初始化。實例也可訪問類屬性,同一個類的多個實例訪問類屬性時,實際上訪問的是同一個類屬性,訪問的都是該類的屬性。
局部變量:在方法內定義的變量。局部變量分為形參(方法簽名中定義的變量)、方法局部變量(在方法內定義的變量)和代碼塊局部變量(在代碼塊中定義的變量)。
形參作用域在整個方法內有效。方法局部變量在方法體內的定義的地方開始有效,到方法結束時失效。代碼塊局部變量,從定義該變量的地方生效,到該代碼塊結束時失效。
局部變量除形參外,都必須顯式初始化(指定初始值)之后才能訪問,否則將出錯。(形參的初始化在調用該方法時由系統(tǒng)完成)
不能無限制的定義成員變量。當定義一個成員變量是,成員變量將被放置到堆內存中去,成員變量的范圍將擴大到類存在范圍或者對象存在范圍,這種范圍的擴大有兩個害處:
1、增大了變量的生存時間,將導致更大的系統(tǒng)開銷;
2、擴大了變量的作用域,不利于提高程序的內聚性。
以下情形,應該考慮使用成員變量:
1、需要定義的變量用于描述某個類或某個對象的固有信息,這種變量應定義為成員變量。如果這種信息對這個類的所有實例完全相同,或者說它是類相關的即類的屬性性質變,該類的所有實例的性質也同樣改變,這種類相關的信息應該定義為類屬性(static修飾);如果這種信息是實例相關的,即不同的實例,實例的信息可能不同,這種實例相關的信息應該定義成實例屬性(不用static修飾)。
2、在類中,需要定義一個變量來保存該類或者實例運行時的狀態(tài)信息,這種用于保存某個類,或者某個實例狀態(tài)信息的變量通常應該定義為成員變量。
3、如果某個信息需要在某個類的多個方法之間進行共享,則這個信息應該用成員變量來保存。
即使在程序中使用局部變量,也應該盡可能地縮小局部變量的作用范圍,局部變量的作用范圍越小,它在內存里停留的時間就越短,程序運行性能越好。
本文版權歸黑馬程序員JavaEE學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
首發(fā):http://java.itheima.com/