Java1.8以後纔有的。
(參數) -> (結果)
//例如:
(String s) -> s.length();
x -> x*x;
() ->{System.out.println("aaa");}
在Java中的Lambda表達式,大體相當於其他語言的匿名函數或者指針函數。然而在Java中,則可以認爲是匿名類的一個範例。至於匿名類,在前面已經簡單陳述過了。
舉一個簡單的例子:
Runnable dolt=new Runnable(){
public void run()
{
System.out.println("普通寫法");
}
}
new Thread(doit).start();//執行緒
//////////////////////////////////////////////////////////////////////////////////////////////
Runnable doit = () ->{System.out.println("Lambda 寫法");}//只有一句,也可以不寫花括號
new Thread(doit).start();//執行緒
//////////////////////////////////////////////////////////////////////////////////////////////
new Thread(()->{System.out.println("Lambda+執行緒 寫法");}).start();
Lambda表達式大大的簡化了書寫,可用於執行緒、數學計算、按鈕事件處理等等。由於Lambda只能表示一個函數,所以能寫成Lambda的介面要求包含最多隻能一個抽象函數。可以將Lambda表達式將程式碼當成數據來處理。
主要是將基本型別的包裝成參照型別(object),例如int->Interger
共有8類:
Boolean,Byte,Short,Character,Integer,Long,Float,Double
Integer i = new Integer(10);
裝箱與拆箱
裝箱 : Integer I = 10;
拆箱 : int i = I;
列舉是一種特殊的class型別,在簡單情況下,用法與其他語言的enum基本一致。
enum Light{Red,Yellow,Green};
可以在enum中新增欄位、方法、構造方法等。
這裏的註解又稱爲註記、標記、標註等,不等於註釋,在各種語法要素上加上附加資訊,供編譯器或其他程式使用,所有的註解都是java.lang.annotation.Annotation的自子類。
例如:
@Override//表示覆蓋父類別方法
@Deprecated//表示過時的方法,會產生警告
@SuppressWarnings//編譯不產生警告
自定義註解:比較複雜比較少用,下面 下麪給一個小小例子
public @interface Author{
String name();
}
Java中是沒有指針的,但是參照(new一個新物件,對物件就行操作)實際就是指針,但是相比較於C語言,Java中的參照是受控制的安全的,比如:
1.會檢查真空指引;
2.沒有指針運算;
3.不能存取沒有參照的記憶體;
4.自動回收垃圾;
基本數據型別的相等
數值型別:轉換後比較
浮點數,一般不使用==進行比較
Double.NaN = = Double.NAN結果爲false
Boolean型數據無法與int相比較。
一些特例:
Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println(i==j);
//輸出是false,因爲這裏是兩個物件。
Integer m = 10;
Integer n = 10;
System.out.println(m==n);
//輸出是true,因爲利用了包裝,-128~127之間的數有快取
Integer p = 200;
Integer q = 200;
System.out.println(p==q);
//輸出是false,超過快取區域大小
執行結果爲:
false
true
false
String物件的特殊性,判斷相等時,不要使用==。而是使用equals。
String hello = "Hello",hel = "Hel",lo = "lo";
System.out.println(hello == ("Hel"+"lo"));//true
System.out.println(hello == ("Hel"+lo));//false
System.out.println(hello == new String("Hello"));//flase,新的物件String
System.out.println(hello == ("Hel"+lo).intern());//true
如果你對Java有興趣,可以瞭解一下前面幾期的基礎知識!下面 下麪附上鍊接:
Java程式設計基礎認知:Java學習日記1——基礎認知
Java物件導向程式設計認識:Java學習日記2——物件導向程式設計認知
Java程式的基本結構認識:Java學習日記3——程式型別與構成認知
Java的輸入輸出方法總結:Java學習日記4——Java輸入輸出方法總結
Java的數據型別、變數、常數、運算子:Java學習日記5——數據型別、變數、常數、運算子、陣列
Java學習日記6——類、欄位、方法、this的使用:Java學習日記6——類、欄位、方法、this的使用
Java學習日記7——類的繼承、super使用規則:Java學習日記7——類的繼承、super使用規則
Java學習日記8——修飾符:Java學習日記8——public、static、private、final、abstract、protected
Java學習日記9——介面(長文預警):Java學習日記9——介面(長文預警)
Java學習日記10——Java中的變數及其傳遞:Java學習日記10——Java中的變數及其傳遞
Java學習日記11——多型和虛方法呼叫:Java學習日記11——多型和虛方法呼叫
Java學習日記12——構造方法及其初始化、構造方法的執行過程——Java學習日記12——構造方法及其初始化、構造方法的執行過程
Java學習日記13——內部類和匿名類、以及垃圾回收機制 機製——Java學習日記13——內部類和匿名類、以及垃圾回收機制 機製