次のスニペットについて
GregorianCalendar a = new GregorianCalendar(2009, 11, 10);
System.out.println(a.getTime()); // Thu Dec 10 00:00:00 ICT 2009
a.add(Calendar.MONTH, 1);
System.out.println(a.getTime()); // Sun Jan 10 00:00:00 ICT 2010
この行を変更すると
a.add(Calendar.MONTH, 1);
この行に
a.set(Calendar.MONTH, a.get(Calendar.MONTH) + 1);
同じ結果を返します
// Sun Jan 10 00:00:00 ICT 2010
2009 年 12 月の場合、月 + 1 (つまり 1 月) に設定すると、月は 2009 年 1 月になるはずですが、代わりに 2010 年 1 月です。
では、この場合のセットと追加の違いは何ですか?