勉強メモ@プロJava/その6
第11章メソッド
▼個人的に忘れがちなのでマークした箇所
staticメソッドから呼び出す同じクラス内のメソッドはstaticメソッドにする必要がある
項番11.1.3練習問題p.216
「(名前)さんの平均点は(平均)点です」と表示するshowResultメソッドをStudentレコードに用意してみましょう。
recordにまだ慣れてないからちょっと違和感…配列とクラスのあいのこ?
package projava; public class InstanceMethodExercise { record Student(String name,int englishScore,int mathScore){ int average(){ return (this.englishScore() + this.mathScore()) /2; } void showResult(){ System.out.println("%sさんの平均点は%d点です".formatted(this.name(),this.average())); } } public static void main(String[] args) { var kis = new Student("kis",60,80); kis.showResult(); } }
▼コンソール
うむ!
練習問題 about ラムダ式p.219
1.次のメソッドをラムダ式で表してみましょう。
boolean check(String s){ return s.contains("y"); }
s -> s.contains("y")
2.次のメソッドをラムダ式で表してみましょう。
void print(String s){
System.out.println(s);
}
s -> System.out.println(s);
3.次のラムダ式をupperという名前のメソッドにしてみましょう。引数と戻り値の型はどちらもStringです。
s -> s.toUpperCase()
String upper(String s){
return s.toUpperCase();
}
4.次のラムダ式をemptyという名前のメソッドにしてみましょう。引数の型はString、戻り値の型はbooleanです。
s -> s.isEmpty()
boolean empty(String s){ return s.isEmpty(); }
練習問題 about メソッド参照p.222
1.次のコードをメソッド参照を使って書き換えてみましょう。
IntStream.of(nums).mapToObj(n ->"*".repeat(n)).toList()
IntStream.of(nums).mapToObj("*" :: repeat).toList()
練習問題(ラムダ式からメソッド参照への書き換え)p.223
1.次のラムダ式をメソッド参照を使って書き換えてみましょう。
names.stream().map(s ->s.toUpperCase()).toList()
names.stream().map(String :: toUpperCase).toList()
2.次のラムダ式をメソッド参照を使って書き換えてみましょう。
names.stream().map(s ->"%sさん".formatted(s)).toList()
names.stream().map("%sさん" :: formatted).toList()
3.メソッド参照をラムダ式を使って書き換えてみましょう。
names.stream().map(String::toLowerCase).toList()
names.stream().map(s -> s.toLowerCase()).toList()
そして答え合わせ_φ( ̄ー ̄ )
おっいけてるのでは…!わふーい!
メソッド参照の書き方はまだ慣れないけど、引数の妥当性を考慮する手間が省けてスッキリ書けていいな。
明日も「あさJava」できるようにがんばろっと^^