intstream.range(1000,10000).filter(v->
v / 1000 * v / 1000 * v / 1000 + v / 100 * v / 100 * v / 100 + v / 10 * v / 10 * v / 10 == v
).foreach(system.out::println);
上面的表示式中多處用到lamnda表示式以及stream api,那麼什麼是lambda表示式?
(int x,int y)-> ;
(int x,int y)->;
省略引數型別:編譯器會根據使用的環境推斷出其引數型別.
當只有乙個引數時,不僅能省略引數型別,連小括號也能省略
沒有引數時,小括號不能省略
帶修飾符的引數型別不能省略
lamda表示式的實現體:
public
class lambda2 ;
addable q = (a, b) -> a + b;
outputable out = () -> ;
outputable out3 = () ->
system.out.println();
;//方法引用
outputable out2 = system.out::println;
//有修飾符修飾時,引數型別不能省略
finable fin = (final int x, int y) -> x / y;
}private
static
inte***ce addable
private
static
inte***ce outputable
private
static
inte***ce finable
}
public
static
void
main(string args)
private
static
inte***ce addable
private
static
inte***ce outputable
public
static
void
main(string args)
private
static
inte***ce addable
inte***ce outputable
static
void output(lambda4.addable2 add)
}public
class lambda4
@functionalinte***ce
inte***ce addable2
default
int divide()
}
@functionalinte***ce
inte***ce
dividable }
@functionalinte***ce
inte***ce
dividable2
函式式介面
引數型別
返回型別
抽象方法
描述其他方法
runnable
無void
run作為無引數和無返回值的動作執行
supper無t
get提供乙個t型別值
consumert無
accept
處理乙個t型別引數
andthen
predicate
tboolean
test
布林函式
and,or,negate,isequal
functiontr
有乙個t型別引數的函式
compose,andthen,identity
public
static
void
main(string args)
inte***ce addable
inte***ce multable
方法引用的型別:
表示式說明typename::staticmethod
引用類,介面,列舉中的靜態方法
objectref::instancemethod
特定物件的例項方法
classname::instancemethod
類的任意物件的例項方法
typename.super::instancemthod
特定物件的超類的例項方法
arraytypename::new
陣列的構造方法
inte***ce convert
@requiresapi(api = build.version_codes.n)
public
static
void
main(string args)
public
static
void
main(string args)
if (count == 3) }};
c.accept(new
int);
for (int i = 0; i < 10; i++) };}
}
java8新特性之lambda表示式
lambda表示式需要支援函式式介面 介面中只有乙個抽象方法的介面 可以用 functionalinte ce註解修飾介面,這樣如果定義超過乙個抽象方法就會報錯 幾種格式 格式一 無引數,無返回值 system.out.println hello 格式二 有乙個引數,無返回值 x system.ou...
Java8新特性 Lambda表示式
lambda表示式的本質只是乙個語法糖,由編譯器推斷並幫你轉換包裝為常規的 因此你可以使用更少的 來實現同樣的功能。基本語法 parameters expression parameters 簡單例子 僅用三行 完成 排序後輸出列表 public static void main string ar...
java8新特性 Lambda表示式
private static void comparecreatethread t1 start 建立乙個執行緒 lambda表示式 new thread system.out.printf 執行緒 s 正在執行 n thread.currentthread getname t2 start 執行結...