9章6

Rmag Breaking News

このコードの解説を行います。

1. import java.time.DayOfWeek;
2. import java.time.LocalDate;

4. public class Sample {
5. public static void main(String[] args) {
6. LocalDate a = LocalDate.of(2019, 8, 19); // ‘a’に2019年8月19日の日付を設定
7. LocalDate b = LocalDate.now(); // ‘b’に現在の日付を設定
8. b.with(DayOfWeek.MONDAY); // ‘b’の日付を同週の月曜日に設定するが、結果は無視される
9. System.out.println(a.equals(b) // ‘a’と’b’が等しいか判定し、結果を出力
10. + “, “ + a.isBefore(b)); // ‘a’が’b’より前の日付か判定し、結果を出力
11. }
12. }

6行目では、LocalDateオブジェクトaを2019年8月19日に設定しています。

7行目では、LocalDateオブジェクトbを現在の日付に設定しています。

8行目では、b.with(DayOfWeek.MONDAY);という行があります。このメソッドはbの日付をその週の月曜日に設定しようとしますが、LocalDateは不変オブジェクトであり、メソッドを呼び出しても元のオブジェクトは変更されません。このメソッドから戻る新しいLocalDateオブジェクトを何の変数にも割り当てていないため、この操作は無視されます。

9行目と10行目では、a.equals(b)はaとbが同じ日付かどうかを判定し、a.isBefore(b)はaがbよりも前の日付であるかを判定します。

このコードが実行された日(つまりLocalDate.now()が返す日)が2019年8月20日であると仮定します。この場合、aとbは同じ日付ではありませんので、a.equals(b)はfalseになります。また、a(8月19日)はb(8月20日)よりも前の日付ですので、a.isBefore(b)はtrueになります。

そのため、プリントされる結果はfalse, trueとなり、選択肢Dが正しい答えになります。

Leave a Reply

Your email address will not be published. Required fields are marked *