靜態內部類和Lambda表示式

2021-09-25 22:25:41 字數 1787 閱讀 4356

1.靜態內部類

①有名靜態內部類

static class heart

}

②匿名靜態內部類

class father 

}/**

* 外部類

*/public class outclass

};}

2.用法:

①在非靜態方法建立非靜態內部類的物件,先建立外部類物件,是隱式,用this。

public class body 

}public void get2()

}

②在靜態方法中建立非靜態內部類的物件,必須「顯示」外部類物件。

public class body 	}	

public static void get1()

}

③在非靜態方法中建立靜態內部類的物件,直接建立類的物件。

④在靜態方法中建立靜態內部類的物件,直接建立類的物件。

原因:靜態的在類載入的時候處理,靜態方法直接分配位址,可以被直接呼叫。但是非靜態的不是,必須建立物件才行。

注意:思考:靜態成員變數可以"直接"在非靜態方法或**塊中使用,為什麼?

靜態的在類載入的時候處理:靜態變數直接賦值 靜態方法直接分配位址 靜態**塊直接執行;非靜態的只能在建立物件時執行操作:變數賦值 方法分配位址 **塊執行。

總結:jvm對靜態的操作比非靜態的靠前。

3.①如果為static內部類只能直接定義在外部類中。方法中不能再有方法,只能方法中呼叫方法。

②只有有名靜態內部類中才允許有靜態成員(靜態屬性、靜態**塊和靜態方法)。

4.lambda表示式

①如果方法沒有返回值且只有一行**,則lambda表示式語法可以是這種形式:([引數1], [引數2], [引數3],… [引數n])->單行語句,如下例:

@functionalinte***ce

inte***ce imammal

public class test ;

whale.move("鯨魚"); }}

lambda 表示式:

@functionalinte***ce

inte***ce imammal

public class test

}

②如果方法有返回值且只有一行**,則lambda表示式語法可以是這種形式:([引數1], [引數2], [引數3],… [引數n])->表示式,如下例:

@functionalinte***ce

inte***ce icomputer

public class test ;

int result = computer.add(1,2);

system.out.println(result); }}

lambda 表示式:

@functionalinte***ce

inte***ce icomputer

public class test

}

內部類,Lambda表示式

內部類定義格式 內部類的訪問特點 示例 內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有 外部類要訪問內部類的成員,必須建立物件 public class outer public void method 外界建立成員內部類格式 私有成員內部類 靜態成員內部類 區域性內部類方式方式 示例 c...

內部類,lambda表示式

在乙個類中定義乙個類.分類 成員內部類 在類的成員位置 區域性內部類 在類的區域性位置 例子 成員內部類 public class test1inner class outer 成員內部類 概述 定義在類中方法之外的內部類.私有成員內部類訪問 private 在自己所在的外部類中建立物件訪問.sta...

匿名內部類與Lambda表示式

1.特徵上 沒有名字 2.實現上 既可以擴充套件類,也可以實現介面,但是不能兩者兼備 3.限制上 如果實現介面,只能實現乙個介面 4.功能上 簡化 符合優先使用類而不是介面的設計思想 舉例 description service介面 inte ce service description servi...