lambda表達式
- lambda表達式是接口或者說是接口函數的簡寫
- lambda表達式的基本寫法是:【參數 -> 結果】。其中參數可以使()或一個參數或多個參數,結果是指表達式或語句或{語句}
- 如 (String s) ->s.length()
- 如 x->x*x
- () -> {System.out.println("aaa");}
在java中它實際上是“匿名類的一個實例”,大體上相當於其他語言的“匿名函數”或“函數指針”
Runnable doIt = new Runnable(){
public void run(){
System.out.println("aaa");
}
}
new Thread(doIt).start();
上面是線程執行匿名類的寫法,可以簡寫成下面的方式
Runnable doIt = () -> System.out.println("aaa");
new Thread(doIt).start();
new Thread( () -> System.out.println("aaa");).start();
由於Lambda只能表示一個函數,所以能寫成Lambda的接口要求包含且最多隻能有一個抽象函數,這樣的接口可以(但不強求)用註記【@FunctionalInterface】來表示,稱爲函數式接口
基本類型的包裝類
- 它將基本類型包裝成Object引用類型
- 如將int基本類型包裝成Interger
- 共8類:Boolean,Byte,Short,Character,Interger,Long,Float,Double
Interger i = new Interger(10);
裝箱:包裝類使用的便捷方式
Interger I = 10; // 實際譯爲:Interger I = Interger.valueOf(10);
拆箱:將包裝類的值還原到基本類型
int i = I; // 實際譯爲:int i = I.intValue();
主要方便用於集合,如
Object [] ary = {1, "aaa"};
枚舉
- 枚舉是一種特殊的class類型,在簡單的情況下,用法與其他語言的enum相似
- enum Light {Red, Yellow, Green};
- Light light = Light.Red;
- 實際上它生成了 class Light extends java.lang.Enum
註解
- 又稱註記、標記、標註、註釋(不同於comments),是在各種語法要素上加上附加信息,以供編譯器或其他程序使用
- 所有的註解都是java.lang.annotation.Annotation的子類
- 常見的註解,如:
- @Override 表示覆蓋父類的方法
- @Deprecated 表示過時的方法
- @SuppressWarnings 表示讓編譯器不產生警告
字符串內部化
String對象判斷相等時,一定不要用==,要用equals來判斷對象裏值是否相等。但是對於字符串常量Java會對其作內部化,相同的字符串常量是==的
String hello = "hello", lo = "lo";
System.out.println(hello == ("hel" + "lo")); // true
System.out.println(hello == ("hel" + lo)); // false
System.out.println(hello == ("hel" + lo).intern()); // true