之前學習了幾個關鍵字public,abstract, extends, implements, interface, 今天介紹static(靜態的)final(最終的)
static
從字面上意思很好理解,靜態的,static 是一頂帽子,看戴在誰頭上,
不會修改/只讀/只要一份,static
static接下面四種
–變量 static int a
–方法 static void(){} static int(){}
–類 static class
–匿名方法塊 {}
靜態的不需要new對象就能在這個類中調用,直接用類名點操作符調用。
在靜態方法中,只能使用靜態變量,不能使用非靜態變量
//靜態代碼塊
static
{
}static塊 –在程序運行期間,這段代碼只運行一次。 –執行順序:static塊 > 匿名塊 > 構造函數。
static變量:不管new多少個對象,內存中只有一份在棧內存中。

final
由於Java裏面沒有constant(不變量),用final 關鍵字修飾常量。static final
final類:沒有子類繼承
–final方法:不能被子類改寫
–final變量:基本類型不能修改值,對象類型不能修改指針

final不能修改有兩個含義,見圖片代碼注釋。
final的對象不能new ,因為new一個對象,需要在堆內存開闢一個空間。

常量池
Java中的常量
–public static final
–建議變量名字全大寫,以連字符相連,如OIL_CAR
一種特殊的常量:接口內定義的變量默認是常量

這題會考!
圖片中第一哥是true, 其他是false.
了解 棧空間,和堆空間。
常量式(字面量)賦值創建,放在棧內存 (將被常量化)
new對象進行創建,放在堆內存 (不會常量化)
常量池:相同的值只存儲一份,節省內存,共享訪問(多個指針指向一個地址內容)
Java為包裝類(8個基本變量除了float和double)
字符串都建立常量池

同學,看這裡不是看上面,面試會考

看到這裡你應該會做上面那題了吧,比較對象大小,比較指針是否指向同一個東西

字符串String 不可變對象
修改用下面的方法
StringBuffer(同步,線程安全,修改快速),
StringBuilder(不同步,線程不安全,修改更快)
字符串內容比較:equals方法
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/258977.html
微信掃一掃
支付寶掃一掃