局部變量和成員變量
局部變量是定義在方法中的變量岛都,只能在方法中使用
成員變量是定義在類中的變量敢伸,在類中使用
java會(huì)給成員變量一個(gè)初始值雕旨,但不會(huì)給局部變量初始值
如果成員變量變量名與局部變量變量名同名了儒搭,則在此方法中優(yōu)先使用局部變量
static
java中被static修飾的成員被稱為靜態(tài)成員或類成員撵枢,它是屬于整個(gè)類的民晒,為類的所有對(duì)象所共有
static可以修飾變量、方法和代碼塊
靜態(tài)變量可以直接用類名調(diào)用锄禽,如果在同一個(gè)類中可以直接調(diào)用
靜態(tài)方法中可以直接調(diào)用靜態(tài)變量潜必,不能調(diào)用非靜態(tài)變量(要用對(duì)象來調(diào)用)
靜態(tài)方法中不能定義靜態(tài)變量和調(diào)用this、super關(guān)鍵字沃但,因?yàn)閠his磁滚、super是針對(duì)對(duì)象的,但是靜態(tài)方法屬于類宵晚,方法中定義的是局部變量垂攘,所以靜態(tài)方法中不允許定義靜態(tài)變量(靜態(tài)變量是全局變量)
static修飾的成員只會(huì)在類加載時(shí)創(chuàng)建一次(初始化),調(diào)用static成員時(shí)也會(huì)加載類
static修飾的成員會(huì)被子類繼承淤刃,子類會(huì)隱藏這個(gè)成員晒他,但子類不能覆蓋它
構(gòu)造方法隱式的被指定為static
構(gòu)造方法
new關(guān)鍵字:
new運(yùn)算符通過給這個(gè)對(duì)象分配內(nèi)存并返回一個(gè)指向?qū)ο蟮囊?/p>
new+構(gòu)造方法 來初始化類
構(gòu)造方法無返回值
如果你沒有定義構(gòu)造方法,系統(tǒng)會(huì)默認(rèn)的構(gòu)造一個(gè)無參的構(gòu)造方法
初始化塊
初始化塊是用來初始化類的逸贾,給所有的對(duì)象初始化陨仅,構(gòu)造函數(shù)只給相對(duì)應(yīng)的對(duì)象初始化,初始化塊在對(duì)象一建立就會(huì)運(yùn)行铝侵,且優(yōu)先于構(gòu)造函數(shù)
靜態(tài)初始化塊只能給靜態(tài)變量賦值灼伤,不能給普通變量賦值
靜態(tài)初始化塊最先執(zhí)行(只在類加載時(shí)執(zhí)行,并且只執(zhí)行一次)咪鲜,然后是初始化塊狐赡,最后才是構(gòu)造函數(shù)
內(nèi)部類
內(nèi)部類就是定義在另外一個(gè)類中的類,包含內(nèi)部類的類被稱為外部類
內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù)(包括私有的)
內(nèi)部類有以下幾種:成員內(nèi)部類疟丙,方法內(nèi)部類猾警,靜態(tài)內(nèi)部類孔祸,匿名內(nèi)部類
1.成員內(nèi)部類
成員內(nèi)部類能直接使用(或者使用外部類.this.對(duì)象來調(diào)用)外部類的所有數(shù)據(jù)而不受訪問控制符的影響
定義了成員內(nèi)部類后必須使用外部類的對(duì)象來new一個(gè)內(nèi)部類的對(duì)象
外部類不能直接使用內(nèi)部類的成員變量和方法
public void Testing {
??? public static void main(String[] args) {
??????? Outter o = new Outter();
??????? Outter.Inner?i = o.new Inner();
??? }
}
class Outter {
??? class Inner { }
}
2.靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過new 外部類().成員的方式訪問
創(chuàng)建靜態(tài)內(nèi)部類的對(duì)象時(shí)可以不需要外部類的對(duì)象发皿,直接創(chuàng)建
如果外部類的靜態(tài)成員與內(nèi)部類的靜態(tài)成員名字相同崔慧,可以通過類名直接訪問外部類的靜態(tài)成員,若不同,則可以直接調(diào)用
3.方法內(nèi)部類
方法內(nèi)部類就是定義在外部類的方法中穴墅,只在該方法中使用惶室,不能使用訪問控制符和static修飾符
4.匿名內(nèi)部類
匿名內(nèi)部類是不能有名稱的類,所以沒辦法引用他們玄货,必須在創(chuàng)建時(shí)皇钞,作為new語(yǔ)句的一部分來聲明他們
如:Outter o = new Outter() {
??? //匿名內(nèi)部類
}
訪問修飾符
訪問修飾符有四種:private 默認(rèn) protected public
private是私有的,只能在當(dāng)前類中使用
不能在方法體內(nèi)部使用private松捉,因?yàn)閜rivate修飾的變量屬于全局變量
默認(rèn) 可以在當(dāng)前類和同一包中的類中使用
protected 可以在當(dāng)前類和同一包中的類以及子類中使用
public 可以被所有類訪問
final關(guān)鍵字
final可以修飾類夹界、方法、屬性和變量
修飾類的時(shí)候隘世,該類不能被繼承可柿,final 類的所有成員和方法都會(huì)隱式的被指定為final成員或方法
修飾方法,則該方法不能能被覆蓋丙者,類的private方法會(huì)隱式的被指定為final方法
修飾屬性复斥,則該屬性不會(huì)隱性的初始化
修飾變量,該變量就成了常量械媒,當(dāng)final作用于類的成員變量時(shí)目锭,成員變量(注意是類的成員變量,局部變量只需要保證在使用之前被初始化賦值即可)必須在定義時(shí)或者構(gòu)造器中進(jìn)行初始化賦值纷捞,而且final變量一旦被初始化賦值之后痢虹,就不能再被賦值了。
equal 和 ==
基本數(shù)據(jù)類型之間的比較應(yīng)該用==主儡,比較的是他們的值世分。引用數(shù)據(jù)類型用==比較的時(shí)候,比較的是他們?cè)賰?nèi)存中的地址