Javaの大海原をじゃばじゃばと

勉強メモとか雑記です

勉強メモ@プロJava/その6

第11章メソッド

▼個人的に忘れがちなのでマークした箇所

staticメソッドから呼び出す同じクラス内のメソッドはstaticメソッドにする必要がある

「プロになるJava」より gihyo.jp

項番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()

そして答え合わせ_φ( ̄ー ̄ )

nowokay.hatenablog.com

おっいけてるのでは…!わふーい!
メソッド参照の書き方はまだ慣れないけど、引数の妥当性を考慮する手間が省けてスッキリ書けていいな。
明日も「あさJava」できるようにがんばろっと^^