Ctrl + Alt +S:快速産生get與set方法、構造方法等。
棧:一般是方法調用時進入的區域,方法中永遠使用與方法最近的參數。
傳值與傳址
指的是方法調用時的參數傳遞。
a.傳值:方法調用時傳遞的是基本類型;傳的是變量的副本,不會影響原始變量資料。
b.傳址:方法調用時傳遞的是引用類型;傳的是位址,隻要該位址中的任何成員變量被改變,原始變量資料就會改變,就會影響外層類型。
static
記憶體中被GC回收時間由短到長的順序如下:
棧—>堆—>方法區
static修飾的屬性或方法在記憶體中獨占空間,并且此空間被堆中new出的對象共享,即堆中任何對象對屬性的操作都會影響後面其它對象對此值資料的通路。通路修飾符:public 、private、default、protected
類的通路修飾符:public 預設(不寫)
修飾符:final、static、abstract
a. static修飾屬性
注意:修飾符可以有多個;static盡量不要和private一起使用(static目的在于用類名調用)
對象屬性:通過對象調用的屬性;
類屬性(static修飾):直接通過類名調用,無需建立對象
public static void setSex(String sex) {
Student.sex = sex;
}
b.static修飾方法
類方法。
1. 直接通過類名調用;
2. 靜态方法中不能有非靜态的屬性,非靜态的方法。
3. 靜态方法中不能有this關鍵字;
this指代目前類的對象,與static修飾的在記憶體中屬于不同的空間(方法區與堆)。
4.在開發中一般作為工具類使用(使用技巧)。
c.static修飾代碼塊
定義:{ }
種類:
1.普通代碼塊定義在方法中 注意其作用域(結合for循環了解)
2.靜态代碼塊(static修飾)
3.構造代碼塊在類之内方法之外
4.同步代碼塊(線程)
使用:構造代碼塊、靜态代碼塊:完成一些初始化工作。
執行順程式:main()—>靜态代碼塊—>構造塊—>構造方法—>普通方法—>普通代碼塊
注:據此推出:類中的構造方法不一定是最先執行的。
繼承
列印對象的時候會預設調用該類的toString(),未定義toString()則列印位址。若定義了toString()則會傳回其中傳回的内容。
格式:
public class 子類 extends 父類{
//子類具備父類中屬性和方法
}
特點:
1. java繼承隻能是單繼承。父類可以被多個子類繼承,但一個子類隻能繼承一個父類。
2. 繼承可以實作多層繼承(implements)。
3. 父類的私有化屬性和方法不能被繼承。
重寫(override)(覆寫)
發生在子類中。
定義:子類中存在與父類中方法傳回值相同、方法名相同、參數相同的方法。
注意:
1.子類重寫的通路修飾符不能小于父類
2.父類的方法不能滿足子類需求時使用重寫。
3. 三同一大
super
屬性:調用父類屬性
先找本類屬性,沒有調用父類屬性
方法:調用父類方法
先找本類方法,沒有調用父類方法
構造方法:super() 父類無參構造方法