局部變量和成員變量
局部變量是定義在方法中的變量,只能在方法中使用
成員變量是定義在類中的變量,在類中使用
java會給成員變量一個初始值,但不會給局部變量初始值
如果成員變量變量名與局部變量變量名同名了,則在此方法中優(yōu)先使用局部變量
static
java中被static修飾的成員被稱為靜態(tài)成員或類成員,它是屬于整個類的,為類的所有對象所共有
static可以修飾變量、方法和代碼塊
靜態(tài)變量可以直接用類名調(diào)用,如果在同一個類中可以直接調(diào)用
靜態(tài)方法中可以直接調(diào)用靜態(tài)變量,不能調(diào)用非靜態(tài)變量(要用對象來調(diào)用)
靜態(tài)方法中不能定義靜態(tài)變量和調(diào)用this、super關(guān)鍵字,因為this、super是針對對象的,但是靜態(tài)方法屬于類,方法中定義的是局部變量,所以靜態(tài)方法中不允許定義靜態(tài)變量(靜態(tài)變量是全局變量)
static修飾的成員只會在類加載時創(chuàng)建一次(初始化),調(diào)用static成員時也會加載類
static修飾的成員會被子類繼承,子類會隱藏這個成員,但子類不能覆蓋它
構(gòu)造方法隱式的被指定為static
構(gòu)造方法
new關(guān)鍵字:
new運算符通過給這個對象分配內(nèi)存并返回一個指向?qū)ο蟮囊?/p>
new+構(gòu)造方法 來初始化類
構(gòu)造方法無返回值
如果你沒有定義構(gòu)造方法,系統(tǒng)會默認的構(gòu)造一個無參的構(gòu)造方法
初始化塊
初始化塊是用來初始化類的,給所有的對象初始化,構(gòu)造函數(shù)只給相對應(yīng)的對象初始化,初始化塊在對象一建立就會運行,且優(yōu)先于構(gòu)造函數(shù)
靜態(tài)初始化塊只能給靜態(tài)變量賦值,不能給普通變量賦值
靜態(tài)初始化塊最先執(zhí)行(只在類加載時執(zhí)行,并且只執(zhí)行一次),然后是初始化塊,最后才是構(gòu)造函數(shù)
內(nèi)部類
內(nèi)部類就是定義在另外一個類中的類,包含內(nèi)部類的類被稱為外部類
內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù)(包括私有的)
內(nèi)部類有以下幾種:成員內(nèi)部類,方法內(nèi)部類,靜態(tài)內(nèi)部類,匿名內(nèi)部類
1.成員內(nèi)部類
成員內(nèi)部類能直接使用(或者使用外部類.this.對象來調(diào)用)外部類的所有數(shù)據(jù)而不受訪問控制符的影響
定義了成員內(nèi)部類后必須使用外部類的對象來new一個內(nèi)部類的對象
外部類不能直接使用內(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)部類的對象時可以不需要外部類的對象,直接創(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)建時,作為new語句的一部分來聲明他們
如:Outter o = new Outter() {
??? //匿名內(nèi)部類
}
訪問修飾符
訪問修飾符有四種:private 默認 protected public
private是私有的,只能在當前類中使用
不能在方法體內(nèi)部使用private,因為private修飾的變量屬于全局變量
默認 可以在當前類和同一包中的類中使用
protected 可以在當前類和同一包中的類以及子類中使用
public 可以被所有類訪問
final關(guān)鍵字
final可以修飾類、方法、屬性和變量
修飾類的時候,該類不能被繼承,final 類的所有成員和方法都會隱式的被指定為final成員或方法
修飾方法,則該方法不能能被覆蓋,類的private方法會隱式的被指定為final方法
修飾屬性,則該屬性不會隱性的初始化
修飾變量,該變量就成了常量,當final作用于類的成員變量時,成員變量(注意是類的成員變量,局部變量只需要保證在使用之前被初始化賦值即可)必須在定義時或者構(gòu)造器中進行初始化賦值,而且final變量一旦被初始化賦值之后,就不能再被賦值了。
equal 和 ==
基本數(shù)據(jù)類型之間的比較應(yīng)該用==,比較的是他們的值。引用數(shù)據(jù)類型用==比較的時候,比較的是他們再內(nèi)存中的地址