本文為學(xué)習(xí)筆記 能力有限 如有錯誤望指正。謝謝5佣恪9姿!!
this: this 可以看作是一個變量种樱,值是當(dāng)前對象的引用
super:當(dāng)前子類對象的父類對象的引用(當(dāng)我們初始化子類對象時(shí)也會隨之初始化父類對象蒙袍,子類對象若想引用父類對象的的成員變量需要使用super關(guān)鍵字)
? ? ? ? public class Leaf {
? ? ? ? ? ? int i = 0;
????????????Leaf ( int i ) {
? ? ? ? ? ? ? ? this.i = i;//可以用來解決參數(shù)變量和成員變量重名的情況
????????????}
? ? ? ? ? ? Leaf? increasment () {
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? ? ? return this;
????????????}
? ? ? ? ? ? void print () {
? ? ? ? ? ? ? ? System.out.println( "i = " + i );
????????????}
? ? ? ? ? ? public static void main(String[] args) {
? ? ? ? ? ? ? ? Leaf leaf = new Leaf(100);
? ? ? ? ? ? ? ? leaf.increasment().increasment().print();
????????????}
?????????}
static :?
1.用static聲明的成員變量是靜態(tài)變量存儲在程序的datasegment,它為該類的公用變量缸托,在類第一次使用的時(shí)候初始化且只有一份左敌,該類的所有對象共享這一個變量瘾蛋。而非靜態(tài)成員變量在類實(shí)例化的時(shí)候初始化俐镐,而且每new一個對象都會在堆內(nèi)存里開辟新的一段空間存儲新的對象。從生命周期上看static變量屬于類哺哼,類被加載時(shí)初始化佩抹,類被銷毀時(shí)也隨之消失叼风。
?2. 用static聲明的方法是靜態(tài)方法,靜態(tài)成員變量一樣棍苹,屬于類本身无宿,在類裝載的時(shí)候被裝載到內(nèi)存(Memory),不自動進(jìn)行銷毀枢里,會一直存在于內(nèi)存中孽鸡,直到JVM關(guān)閉。?static?方法不可以訪問非static成員(試想一個隨著類的加載而載入到內(nèi)存的靜態(tài)方法怎樣引用一個還沒有實(shí)例化的類的非靜態(tài)的成員變量呢栏豺?)同理在static方法中也不能使用this和super關(guān)鍵字彬碱。
3.可以通過對象引用和類名(不需要實(shí)例化)訪問靜態(tài)成員。
? ? ? ? ? ? ? ?