學習筆記之Lambda(物件導向思想與遞迴)

2021-10-02 13:01:39 字數 1497 閱讀 6076

只要能獲取到結果,誰去做的,怎麼做的都不重要,重視的是結果,不重視過程。

一些引數 乙個箭頭 一段**

(引數型別 引數名稱)->

(引數列表)->;

使用lambda表示式,實現多執行緒

new thread(()->).start();

()=run的()有引數的話就在裡面寫,沒有就空著,多個引數用,分開

->把括號引數傳到中括號語句來

{}重寫介面的方法體

//省略格式

new thread(()->syso).start();

lambda省略格式:

可推導可省略

可省略內容:

1.(引數列表):括號中引數列表的資料型別,可以省略不寫

2.(引數列表):括號中的引數如果只有乙個,那麼型別和()都可以省略

3.:如果{}中的**只有一行,無論是否有返回值,都可以省略({},return,分號 )但必須一起省略

arrays.sort(arr,(person o1, person o2)->);

//省略版

arrays.sort(arr,(o1, o2) -> o1.getage()-o2.getage());

cal(100,200,(int a,int b)->);

//省略版

cal(200,300,(a,b)->a+b);

1.lambda必須具有介面,且要求介面中有且僅有乙個抽象方法

無論是內建的runnable comparator介面還是自定義介面,只要有當介面中的抽象方法存在且唯一時,才可以使用

2.必須具有上下文推斷

也就是方法的引數或區域性變數型別必須為lambda對應的介面型別,才能使用lambda作為該介面的例項。

備註:有且僅有乙個抽象方法的介面,稱為「函式式介面」。

做一件事情,找乙個能解決這個事情的物件,呼叫物件的方法,完成事情。

使用匿名內部類,實現多執行緒程式

runnabble r=new runnable();

new thread®.start();

更加簡化

new thread(new runnable()).start();

為了呼叫不得不建立類。

匿名內部類

好處可以幫我們省去實現類的定義,弊端它的語法太複雜

方法自己呼叫自己

遞迴的分類:直接遞迴和間接遞迴

直接遞迴為方法自身呼叫自己

間接遞迴可以a呼叫b,b呼叫c,c方法呼叫a方法。

注意: 遞迴一定要有條件限定,保證地遞迴能夠停止下來,否則發生棧記憶體溢位 遞迴雖有限定條件,但次數不能太多,否則也會發生溢位

構造方法,禁止遞迴

使用前提:

當呼叫方法的時候,方法主體不變,每次呼叫方法的引數不同,可以使用遞迴

物件導向學習筆記

新建乙個子類繼承父類時,會先找到父類的位址,在其之後增加子類的獨有元素。所有執行時先執行父類的建構函式,按照位址順序,執行子類的建構函式,層級越低,建構函式執行順序越靠後。這是子類的建構函式。這是父類的建構函式。這是執行結果。顯然程式是先執行了父類的建構函式,再執行子類的建構函式。在子類有如下屬性 ...

js物件導向學習筆記之四(Date 物件

日期字串轉時間戳 var date 2015 03 18 date new date date.parse date.replace g,date date.gettime document.write date var date new date 返回當前的時間物件 getdate 日 從 dat...

PHP學習筆記 物件導向

類的結構 class classname var attribute 新增屬性 function operation 宣告函式 建構函式 construct 析構函式 destruct 使用類的屬性 在乙個類中,可以訪問乙個特殊的指標 this。eg this attribute。在類的外部直接訪問...