JAVA學(xué)習(xí)

JAVA

數(shù)組

  • int[] name;
  • int name[];
  • name = new int[5];(在已經(jīng)聲明了name數(shù)組的情況下)
  • int[] name = {1,2,3};等價于int[] scores = new int[]{1,2,3};

  • 類名 對象名=new 構(gòu)造方法名();
  • 成員變量與局部變量(含義、作用、作用域、初始化時是否會賦值、優(yōu)先級)
  • 構(gòu)造方法(與類名相同):成員變量賦值

static

  • 被static修飾的成員所有對象共享,又稱靜態(tài)成員/類成員,靜態(tài)成員屬于整個類,當(dāng)系統(tǒng)第一次使用該類時,就會為其分配內(nèi)存空間直到該類被卸載才會進(jìn)行資源回收!
  • 靜態(tài)變量
  • 靜態(tài)方法:
    1、靜態(tài)方法中可以直接調(diào)用同類中的靜態(tài)成員(包括屬性和方法),但不能直接調(diào)用非靜態(tài)成員;如果希望在靜態(tài)方法中調(diào)用非靜態(tài)變量,可以通過創(chuàng)建類的對象,然后通過對象來訪問非靜態(tài)變量
    2、在普通成員方法中,則可以直接訪問同類的非靜態(tài)變量和靜態(tài)變量

靜態(tài)初始化塊


    int num3;
    {
        num3 = 1;
    }

  • 在類的聲明中,可以包含多個初始化塊,當(dāng)創(chuàng)建類的實(shí)例時,就會依次執(zhí)行這些代碼塊。如果使用 static 修飾初始化塊,就稱為靜態(tài)初始化塊。
  • 靜態(tài)初始化塊只在類加載時執(zhí)行,且只會執(zhí)行一次,同時靜態(tài)初始化塊只能給靜態(tài)變量賦值,不能初始化普通的成員變量。
  • 程序運(yùn)行時靜態(tài)初始化塊最先被執(zhí)行,然后執(zhí)行普通初始化塊,最后才執(zhí)行構(gòu)造方法。由于靜態(tài)初始化塊只在類加載時執(zhí)行一次,所以當(dāng)再次創(chuàng)建對象時并未執(zhí)行靜態(tài)初始化塊。

封裝

  • 1、修改屬性的可見性(private)
  • 2、創(chuàng)建“get+首字母大寫的屬性名”方法
  • 3、在方法里進(jìn)行屬性值的過濾,賦值時調(diào)用2中所描述的方法
    注意:也可以不用2中所說的方法命名方式,但這是一種編程的規(guī)范。

  • 作用:管理java文件,解決同名文件沖突
  • 定義方式:package + 包名(必須放在程序第一行。類似于php的命名空間)
  • 規(guī)范:全小寫

訪問修飾符

訪問修飾符 本類 同包 子類 其他
private
默認(rèn)
protected
public

內(nèi)部類

  • 定義在一個類里面的類
  • 作用:

1、 內(nèi)部類提供了更好的封裝,可以把內(nèi)部類隱藏在外部類之內(nèi),不允許同一個包中的其他類訪問該類
2、 內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù),包括私有的數(shù)據(jù)
3、內(nèi)部類所實(shí)現(xiàn)的功能使用外部類同樣可以實(shí)現(xiàn),只是有時使用內(nèi)部類更方便

  • demo
//外部類HelloWorld
public class HelloWorld {
    
    // 內(nèi)部類Inner,類Inner在類HelloWorld的內(nèi)部
    public class Inner {
        
        // 內(nèi)部類的方法
        public void show() {
            System.out.println("welcome to imooc!");
        }
    }
    
    public static void main(String[] args) {
        
        // 創(chuàng)建外部類對象
        HelloWorld hello = new HelloWorld();
        // 創(chuàng)建內(nèi)部類對象
        Inner i = hello.new Inner();
        // 調(diào)用內(nèi)部類對象的方法
        i.show();
    }
}
  • 種類:成員內(nèi)部類、靜態(tài)內(nèi)部類、方法內(nèi)部類、匿名內(nèi)部類

1、成員內(nèi)部類(普通內(nèi)部類)

  • 定義在外部類的內(nèi)部,相當(dāng)于外部類的一個成員變量??梢允褂萌我獾脑L問控制符。
  • 內(nèi)部類的方法可以訪問外部類的數(shù)據(jù),不受訪問控制符的影響。
  • 使用方式:內(nèi)部類 對象名 = 外部類對象.new.內(nèi)部類()
  • 編譯時生成兩個.class文件,除了默認(rèn)的.class文件之外,另外一個命名為:外部類$內(nèi)部類.class
  • 外部類不能直接使用內(nèi)部類的成員和方法
  • 如果外部類和內(nèi)部類具有相同的成員變量或方法,內(nèi)部類默認(rèn)訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用 this 關(guān)鍵字。
  • 例子:
//外部類HelloWorld
public class HelloWorld{
    
    //外部類的私有屬性name
    private String name = "imooc";
    
    //外部類的成員屬性
    int age = 20;
    
    //成員內(nèi)部類Inner
    public class Inner {
        String name = "愛慕課";
        //內(nèi)部類中的方法
        public void show() { 
            System.out.println("外部類中的name:" + HelloWorld.this.name);
            System.out.println("內(nèi)部類中的name:" + name);
            System.out.println("外部類中的age:" + age);
        }
    }
    
    //測試成員內(nèi)部類
    public static void main(String[] args) {
        
        //創(chuàng)建外部類的對象
        HelloWorld o = new HelloWorld (); 
        
        //創(chuàng)建內(nèi)部類的對象
        Inner inn = o.new Inner();
        
        //調(diào)用內(nèi)部類對象的show方法
        inn.show();
    }
}

2、靜態(tài)內(nèi)部類

  • 靜態(tài)內(nèi)部類是 static 修飾的內(nèi)部類
  • 靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過 new 外部類().成員 的方式訪問
  • 如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱相同,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員;如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱不相同,則可通過“成員名”直接調(diào)用外部類的靜態(tài)成員
  • 創(chuàng)建靜態(tài)內(nèi)部類的對象時,不需要外部類的對象,可以直接創(chuàng)建 內(nèi)部類 對象名= new 內(nèi)部類();
  • 例子:
//外部類
public class HelloWorld {
    
    // 外部類中的靜態(tài)變量score
    private static int score = 84;
    
    // 創(chuàng)建靜態(tài)內(nèi)部類
    public static class SInner {
        // 內(nèi)部類中的變量score
        int score = 91;
        
        public void show() {
            System.out.println("訪問外部類中的score:" +  HelloWorld.score);
            System.out.println("訪問內(nèi)部類中的score:" + score);
        }
    }

    // 測試靜態(tài)內(nèi)部類
    public static void main(String[] args) {
        // 直接創(chuàng)建內(nèi)部類的對象
        SInner si = new SInner();
        
        // 調(diào)用show方法
        si.show();
    }
}

3、方法內(nèi)部類

  • 方法內(nèi)部類就是內(nèi)部類定義在外部類的方法中,方法內(nèi)部類只在該方法的內(nèi)部可見,即只在該方法內(nèi)可以使用。
  • 由于方法內(nèi)部類不能在外部類的方法以外的地方使用,因此方法內(nèi)部類不能使用訪問控制符和 static 修飾符。
  • 例子:
//外部類
public class HelloWorld {
    
    private String name = "愛慕課";
    
    // 外部類中的show方法
    public void show() { 
        // 定義方法內(nèi)部類
        class MInner {
            int score = 83;
            public int getScore() {
                return score + 10;
            }
        }
        
        // 創(chuàng)建方法內(nèi)部類的對象
        MInner inner = new MInner();
        
        // 調(diào)用內(nèi)部類的方法
        int newScore = inner.getScore();
        
        System.out.println("姓名:" + name + "\n加分后的成績:" + newScore);
    }
    
    // 測試方法內(nèi)部類
    public static void main(String[] args) {
        
        // 創(chuàng)建外部類的對象
        HelloWorld mo = new HelloWorld();
        
        // 調(diào)用外部類的方法
        mo.show();
    }
}

4、匿名內(nèi)部類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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