今日もJava Silver試験対策の問題に挑戦しましょう。
問題
次のコードを実行した場合の出力は何でしょうか?正しい選択肢を選んでください。
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function intToString = (Integer i) -> (i + 10) + " is the result";
System.out.println(intToString.apply(5));
}
}
選択肢
- A. 5 is the result
- B. 10 is the result
- C. 15 is the result
- D. コンパイルエラー
- E. 実行時エラー
答えと解説
回答を見る
答え
C. 15 is the result
解説
解説のポイント:
- ラムダ式の基本構造
- Functionインターフェースの使い方
- 計算の仕組みと出力の流れ
Javaのラムダ式は、匿名メソッドとしての役割を持ちます。Function
インターフェースは、(Integer i)
を受け取り、String
を返すラムダ式を定義しています。
このコードでは、ラムダ式内で整数i
に10を足し、その結果に文字列「 is the result」を結合しています。applyメソッドは入力値5に対して処理を適用するため、実際に計算される内容は (5 + 10) + " is the result"
となり、「15 is the result」が出力されます。
つまずきポイント:
多くの初心者が、数値計算と文字列結合の優先順位に戸惑います。Javaでは、整数計算を優先的に行い、その後に文字列結合を行います。そのため、「15」が最初に計算され、その後に「 is the result」と合体します。このように計算の優先順位を理解することは、計算エラーを避けるために非常に重要です。
発展知識:
Javaのラムダ式は、主に「関数型インターフェース」に基づいて実装されます。「関数型インターフェース」とは、一つの抽象メソッドを持つインターフェースのことです。ラムダ式を使用することで、コードがシンプルになり読みやすくなります。Java8以降とそれ以降のバージョンでは、ラムダ式が多く使用されており、特にストリームAPI(大量のデータ処理を効率的に行うためのツール)との組み合わせが一般的です。ラムダ式を深く理解することで、Javaプログラミングの効率が大幅に向上します。