<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java Lambda 表達式教程 > 原文: [https://beginnersbook.com/2017/10/java-lambda-expressions-tutorial-with-examples/](https://beginnersbook.com/2017/10/java-lambda-expressions-tutorial-with-examples/) Lambda 表達式是 Java 8 中引入的一個新特性。λ 表達式是一個匿名函數。一個沒有名稱且不屬于任何類的函數。 lambda 表達式的概念最初是在 LISP 編程語言中引入的。 ## Java Lambda 表達式語法 要創建 lambda 表達式,我們在 lambda 運算符`->`的左側指定輸入參數(如果有的話),并將表達式或語句塊放在 lambda 運算符的右側。例如,lambda 表達式`(x, y) -> x + y`指定 lambda 表達式接受兩個參數`x`和`y`并返回這些參數的總和。 ```java //Syntax of lambda expression (parameter_list) -> {function_body} ``` ## Lambda 表達式與 Java 中的方法 Java 中的方法(或函數)具有以下主要部分: 1. 名稱 2. 參數列表 3. 正文 4. 返回類型。 Java 中的 lambda 表達式具有以下主要部分: Lambda 表達式**僅具有主體和參數列表**。 1. **沒有**名稱 - 函數是匿名的,所以我們不關心名稱 2. 參數列表 3. 正文 - 這是函數的主要部分。 4. **沒有**返回類型 - java 8 編譯器能夠通過檢查代碼來推斷返回類型。你不必明確提及它。 ## 在 Java 中使用 Lambdas 的位置 要使用 lambda 表達式,您需要創建自己的函數式接口或使用 Java 提供的預定義函數式接口。只有單個抽象方法的接口稱為函數式接口(或單抽象方法接口),例如:`Runnable`,`callable,ActionListener`等。 **使用函數式接口:** Java 8 之前:我們創建匿名內部類。 Java 8 之后:您可以使用 lambda 表達式而不是匿名內部類。 ## Java Lambda 表達式示例 **不使用 Lambda 表達式:**在 java 8 之前,我們使用匿名內部類來實現函數式接口的唯一抽象方法。 ```java import java.awt.*; import java.awt.event.*; public class ButtonListenerOldWay { public static void main(String[] args) { Frame frame=new Frame("ActionListener Before Java8"); Button b=new Button("Click Here"); b.setBounds(50,100,80,50); b.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.out.println("Hello World!"); } }); frame.add(b); frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } ``` **使用 Lambda 表達式:**我們可以像這樣創建一個 lambda 表達式,而不是創建匿名內部類: ```java import java.awt.*; public class ButtonListenerNewWay { public static void main(String[] args) { Frame frame=new Frame("ActionListener java8"); Button b=new Button("Click Here"); b.setBounds(50,100,80,50); b.addActionListener(e -> System.out.println("Hello World!")); frame.add(b); frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } ``` **注意:** 1. 正如您所看到的,我們使用較少的代碼與 lambda 表達式。 2. 向后兼容性:您可以將 lambda 表達式與舊代碼一起使用。 Lambdas 是向后兼容的,因此當您將項目遷移到 Java 8 時,可以在現有 API 中使用它們。 讓我們看幾個 Lambda 表達式的例子。 ## 示例 1:沒有參數的 Java Lambda 表達式 ```java @FunctionalInterface interface MyFunctionalInterface { //A method with no parameter public String sayHello(); } public class Example { public static void main(String args[]) { // lambda expression MyFunctionalInterface msg = () -> { return "Hello"; }; System.out.println(msg.sayHello()); } } ``` 輸出: ```java Hello ``` ## 示例 2:具有單個參數的 Java Lambda 表達式 ```java @FunctionalInterface interface MyFunctionalInterface { //A method with single parameter public int incrementByFive(int a); } public class Example { public static void main(String args[]) { // lambda expression with single parameter num MyFunctionalInterface f = (num) -> num+5; System.out.println(f.incrementByFive(22)); } } ``` 輸出: ```java 27 ``` ## 示例 3:具有多個參數的 Java Lambda 表達式 ```java interface StringConcat { public String sconcat(String a, String b); } public class Example { public static void main(String args[]) { // lambda expression with multiple arguments StringConcat s = (str1, str2) -> str1 + str2; System.out.println("Result: "+s.sconcat("Hello ", "World")); } } ``` 輸出: ```java Result: Hello World ``` ## 示例 4:使用`foreach`循環迭代集合 ```java import java.util.*; ? public class Example{ ? ? ? public static void main(String[] args) { ?? ? ? ? ??? List<String> list=new ArrayList<String>(); ? ? ? ? ?list.add("Rick"); ?? ? ? ? list.add("Negan"); ?? ? ? ? list.add("Daryl"); ?? ? ? ? list.add("Glenn"); ?? ? ? ? list.add("Carl");? ? ? ? ??? ? ? ? list.forEach( ?? ? ? ? // lambda expression? ? ? ? ? ? (names)->System.out.println(names) ?? ? ? ? ); ?? ? } ? } ``` 我們可以使用 lambda 表達式迭代 Maps 和其他集合類,參考本指南:[使用 lambda 表達式迭代 Map 和 List](https://beginnersbook.com/2017/01/lambda-expression-iterating-map-and-list-in-java-8/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看