|
importjava.util.*; importjava.text.*;
publicstaticvoidmain(String[]args){ GregorianCalendarmortgage=newGregorianCalendar(1997,Calendar.MAY,18); mortgage.add(Calendar.YEAR,15); Dated=mortgage.getTime(); DateFormatdf=DateFormat.getDateInstance(); Strings=df.format(d); System.out.println("15yearmortgageamortizedon"+s);} } |
add()一个重要的副作用是它改变的原来的日期。有时候,拥有原始日期和修改后的日期很重要。不幸的是,你不能简单的创建一个GregorianCalendar对象,设置它和原来的相等(equal)。原因是两个变量指向同一个Date()对象地址。如果Date对象改变,两个变量就指向改变后的日期对象。代替这种做法,应该创建一个新对象。下面的程序示范了这种做法:
|
importjava.util.*; importjava.text.*;
publicstaticvoidmain(String[]args){ GregorianCalendargc1=newGregorianCalendar(2000,Calendar.JANUARY,1); GregorianCalendargc2=gc1; GregorianCalendargc3=newGregorianCalendar(2000,Calendar.JANUARY,1); //ThreedatesallequaltoJanuary1,2000
Dated2=gc2.getTime(); Dated3=gc3.getTime();
Strings2=df.format(d2); Strings3=df.format(d3);
System.out.println("gc2is"+s2); System.out.println("gc3is"+s3); } } |

