DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

9章6

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

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.  }
Enter fullscreen mode Exit fullscreen mode

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

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

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

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

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

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

Top comments (0)