首頁>Club>
28
回覆列表
  • 1 # 千鋒頭號粉絲

    隨著程式語言生態系統的氣候不斷變化以及技術的革新,經歷20餘年的發展,Java逐漸演變成長為Java8。相比之前只是單純的面向物件程式語言,Java8增加了很多新特性。

    Java 8對於程式設計師的主要好處在於它提供了更多的程式設計工具和概念,能以更為簡潔、更易於維護的方式解決新的或現有的程式設計問題。在Java 8中有兩個著名的改進:一個是Lambda表示式,一個是Stream。

    Lambda表示式是什麼?

    Lambda表示式,也可稱為閉包,它允許把函式作為一個方法的引數(函式作為引數傳遞進方法中)。使用Lambda表示式可以使程式碼變的更加簡潔緊湊,Lambda表示式的語法格式:

    (parameters) -> expression或(parameters) ->{ statements; }

    Lambda表示式的重要特徵:

    可選型別宣告:不需要宣告引數型別,編譯器可以統一識別引數值。

    可選的引數圓括號:一個引數無需定義圓括號,但多個引數需要定義圓括號。

    可選的大括號:如果主體包含了一個語句,就不需要使用大括號。

    可選的返回關鍵字:如果主體只有一個表示式返回值則編譯器會自動返回值,大括號需要指定明表示式返回了一個數值。

    使用Lambda表示式需要注意以下兩點:

    Lambda表示式主要用來定義行內執行的方法型別介面,例如,一個簡單方法介面。在上面例子中,我們使用各種型別的Lambda表示式來定義MathOperation介面的方法。然後我們定義了sayMessage的執行。

    Lambda表示式免去了使用匿名方法的麻煩,並且給予Java簡單但是強大的函式化的程式設計能力。

    Stream是什麼?

    Stream就是一個流,它的主要作用就是對集合資料進行查詢過濾等操作。Java 8中的 Stream是對集合(Collection)物件功能的增強,它專注於對集合物件進行各種非常便利、高效的聚合操作(aggregate operation),或者大批次資料操作(bulk data operation)。

    對於基本數值型,目前有三種對應的包裝型別Stream:IntStream、LongStream、DoubleStream。當然我們也可以用Stream<Integer>、Stream<Long> >、Stream<Double>,但是boxing和 unboxing會很耗時,所以特別為這三種基本數值型提供了對應的Stream。

    Java 8中還沒有提供其它數值型Stream,因為這將導致擴增的內容較多。而常規的數值型聚合運算可以透過上面三種Stream進行。

    Stream上的操作分為兩類:中間操作和結束操作。中間操作只是一種標記,只有結束操作才會觸發實際計算。

    中間操作又可以分為無狀態的(Stateless)和有狀態的(Stateful),無狀態中間操作是指元素的處理不受前面元素的影響,而有狀態的中間操作必須等到所有元素處理之後才知道最終結果,比如排序是有狀態操作,在讀取所有元素之前並不能確定排序結果。

    結束操作又可以分為短路操作和非短路操作,短路操作是指不用處理全部元素就可以返回結果,比如找到第一個滿足條件的元素。之所以要進行如此精細的劃分,是因為底層對每一種情況的處理方式不同。

    想要永遠處於優勢地位,就要不斷的完善自身、更新技術。

  • 中秋節和大豐收的關聯?
  • 如何快速入門學習java?