Vivian,
No. If you run
you see both dates are "Mon Dec 01 10:00:00 EST 2008".
Note that the month is "zero" based. Meaning cal2 is December (month 11).
Cal is "November 31st." Since November only has 30 days,
Java rolls it to December 1st for you. Since both dates are the same, you get the zero.
One thing - you can use constants to avoid having to code months that aren't intuitive. For example:
Calendar cal2 = new GregorianCalendar(2008, Calendar.DECEMBER, 1, 10, 00);