【JavaSE】面向?qū)ο笾畇tatic、 this和代碼塊

一、static關(guān)鍵字

1. 靜態(tài)變量

  • 在類中,用static聲明的成員變量為靜態(tài)成員變量。
  • 它為該類的公用變量,屬于類,被該類的所有實(shí)例共享,在類被載入時(shí)被顯式初始化,
  • 對于該類的所有對象來說,static成員變量只有一份。被該類的所有對象共享!!
  • 可以使用”對象.類屬性”來調(diào)用。不過,一般都是用“類名.類屬性”。
    public static int count;

2. 靜態(tài)方法

  • 不需要對象,就可以調(diào)用(類名.方法名)
  • 在調(diào)用該方法時(shí),不會(huì)將對象的引用傳遞給它,所以在static方法中不可訪問非static的成員。
public static void count(){
  System.out.println("tt");
}

二、this關(guān)鍵字

this 關(guān)鍵字用來表示當(dāng)前對象本身,或當(dāng)前類的一個(gè)實(shí)例,通過 this 可以調(diào)用本對象的所有方法和屬性。

1.使用this區(qū)分同名變量

public class Student {
    public String name;
    public int age;
    public String numid;
    public String major;

    public Student() {
        System.out.println("空構(gòu)造器");
    }

    public Student(String name, int age, String numid, String major) { 
        this.name = name;
        this.age = age;
        this.numid = numid;
        this.major = major;
    }
}

2.作為構(gòu)造方法初始化對象

相當(dāng)于調(diào)用本類的其它構(gòu)造方法,它必須作為構(gòu)造方法的第一句。

public class Student {
    public String name;
    public int age;
    public Student() {
        this("小王",18);
    }

    public Student(String name, int age) { 
        this.name = name;
        this.age = age;
    }
}

注意:

  • 在構(gòu)造方法中調(diào)用另一個(gè)構(gòu)造方法,調(diào)用動(dòng)作必須置于最起始的位置(首行)。
  • 不能在構(gòu)造方法以外的任何方法內(nèi)調(diào)用構(gòu)造方法。
  • 在一個(gè)構(gòu)造方法內(nèi)只能調(diào)用一個(gè)構(gòu)造方法。

3.作為參數(shù)傳遞

public class Demo{
    public static void main(String[] args){
        B b = new B(new A());
    }
}
class A{
    public A(){
        new B(this).print();  // 匿名對象
    }
    public void print(){
        System.out.println("Hello from A!");
    }
}
class B{
    A a;
    public B(A a){
        this.a = a;
    }
    public void print() {
        a.print();
        System.out.println("Hello from B!");
    }
}

三、代碼塊block

通過{ }自稱作用域

1.普通代碼塊

它是最常見的代碼塊,是類中方法的方法體或在方法名后面。

public class CommonBlock {
    private int count;
    
    public void counting(){
        count = 5;
        {
            count++;
        }
        System.out.println(count);
    }
}

2.構(gòu)造代碼塊

它是用來初始化成員變量,是初始化一個(gè)類的所有構(gòu)造方法共用的特征,且僅運(yùn)行一次。

public class CommonBlock {
    private int count;

    {
        count++;
        System.out.println("構(gòu)造代碼塊執(zhí)行了。。。");
    }

    public void counting(){
        {
            System.out.println("普通代碼塊執(zhí)行了。。。");
        }
        System.out.println(count);
    }

    public static void main(String[] args) {
        CommonBlock c = new CommonBlock();
        c.counting();
    }
}

3.靜態(tài)代碼塊

(經(jīng)常用來初始化類,加載類信息時(shí)執(zhí)行?。?br> 如果希望加載后,對整個(gè)類進(jìn)行某些初始化操作,可以使用static初始化塊。

  • 是在類初始化時(shí)執(zhí)行,不是在創(chuàng)建對象時(shí)執(zhí)行。
  • 靜態(tài)初始化塊中不能訪問非static成員。
    執(zhí)行順序:上溯到Object類,先執(zhí)行Object的靜態(tài)初始化塊,再向下執(zhí)行子類的靜態(tài)初始化塊,直到我們的類的靜態(tài)初始化塊為止。(到繼承再看)
public class TestStaticBlock { 
  static { 
    System.out.println("此處,可執(zhí)行類的初始化工作!"); 
  }
  public static void main(String[] args) { 
    System.out.println("main方法中的第一句");
  } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容