java8新特性之lambda表示式 二

2021-07-17 04:31:57 字數 2016 閱讀 3179

1.普通的寫法:

public

static

void

main(string args)

--------------------------------------------

//引數底層使用的都加了final修飾

public

static

void

printhello(string name,int count)

system.out.println(this);//列印內部類物件的位址,這個this代表是內部類的this,因為這個是靜態方法,外部類物件不存在

}}).start();

}-------------------------------------------

輸出結果:

0helloword!

1helloword!

2helloword!

3helloword!

4helloword!

lambada.testlambda$1@2980e8cb //這個是內部類

2.反編譯上面printhello()方法:

//引數底層使用的都加了final修飾

public

static

void

printhello(final string name, final

int count)

})).start();

}

反編譯printhello()方法,可以知道:

1.printhello()的引數底層使用的都加了final修飾

2.在printhello()中定義的變數也加了final修飾

3.this是指向,內部類的this

2.lambda表示式的寫法:

public

static

void

main(string args)

---------------------------------------------

//引數的在底層被fianl修飾,所以可以在lambda表示式中可以直接使用該自由變數

public

void

printhello(string name,int count)

system.out.println(this);//這個this不是內部類的this,而是外部類的this

}).start();

}-------------------------------------------

輸出結果:

0helloword!

1helloword!

2helloword!

lambada.testlambda@663a8ec8 //這個是外部類

從列印的結果可以知道:

1.printhello()的引數底層使用的都加了final修飾

2.在printhello()中定義的變數也加了final修飾

3.在lambda中的this是指向,建立lambda表示式的方法中的this,而不是內部類的this

1.引數//例如:表示式中的(user o1,user o2)引數

2.區域性變數//例如:方法中定義的變數

3.自由變數(不是引數也不是區域性變數)//例如:方法中的引數

總結:

結論:

1.lambda表示式中的自由變數會被儲存,無論什麼時候執行lambda表示式,都可以直接使用;

2.自由變數在lambda表示式中是不能修改的,因為自由變數是被final修飾

3.引數和區域性變數的使用方式和普通的使用方式相同;

4.lambda表示式中的this指向,建立lambda表示式的方法中的this,而不是內部類的this

java8新特性之一lambda

lambda結合函式式介面使用,函式式介面 functional inte ce 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。1 可選型別宣告 不需要宣告引數型別,即直接可以寫引數,不需要宣告型別,編譯器可以自動識別型別 2 可選的引數圓括號 乙個引數可以不要圓括號,多個引數需要圓...

java8新特性之lambda表示式

lambda表示式需要支援函式式介面 介面中只有乙個抽象方法的介面 可以用 functionalinte ce註解修飾介面,這樣如果定義超過乙個抽象方法就會報錯 幾種格式 格式一 無引數,無返回值 system.out.println hello 格式二 有乙個引數,無返回值 x system.ou...

Java8新特性 Lambda表示式

lambda表示式的本質只是乙個語法糖,由編譯器推斷並幫你轉換包裝為常規的 因此你可以使用更少的 來實現同樣的功能。基本語法 parameters expression parameters 簡單例子 僅用三行 完成 排序後輸出列表 public static void main string ar...