JAVA學習

JAVA

數組

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

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

static

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

靜態初始化塊


    int num3;
    {
        num3 = 1;
    }

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

封裝

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

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

訪問修飾符

訪問修飾符 本類 同包 子類 其他
private
默認
protected
public

內部類

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

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

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

1、成員內部類(普通內部類)

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

2、靜態內部類

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

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

3、方法內部類

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

4、匿名內部類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Unsupported major.minor version 51.0解決辦法 具體步驟 解決:項目------...
    晨星資源閱讀 616評論 0 1
  • 一、繼承 當兩個事物之間存在一定的所屬關系,即就像孩子從父母那里得到遺傳基因一樣,當然,java要遺傳的更完美,這...
    玉圣閱讀 1,074評論 0 2
  • 1.軟件開發概述 軟件生命周期軟件生命周期:軟件的產生到報廢的整個過程軟件生命周期內有:問題定義,可行性分析,總體...
    寒橋閱讀 610評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • JAVA學習筆記作者:劉先寶寫作日期:2016.2.23更新日期:2016.2.25版本號:2.0大綱 1.說說J...
    9ef822571b70閱讀 414評論 2 2