System.out.println(str[i]);
2、StringBuffer类
StringBuffer
publicStringBuffer()
构造一个不包含字符的字符串缓冲区,其初始的容量设为16个字符。
StringBuffer
publicStringBuffer(intlength):
构造一个不包含字符的字符串缓冲区,其初始的容量由参数length设置。
StringBuffer
publicStringBuffer(Stringstr):
构造一个字符串缓冲区,来表示和字符串参数相同的字符序列。
length
publicintlength():
返回字符串缓冲区的长度(字符数)。
capacity
publicintcapacity():
返回字符串缓冲区的当前容量。
该容量表示可用于插入新的字符的存储空间;超出该容量时会发生新的容量分配。
ensureCapacity
publicsynchronizedvoidensureCapacity(intminimumCapacity):
保证缓冲区的容量至少等于指定的最小数。
如果字符串缓冲区的当前容量少于该参数,则分配一个新的更大的内部缓冲区。
新容量将取如下参数中较大的一个:
setLength
publicsynchronizedvoidsetLength(intnewLength):
设置该字符串缓冲区的长度。
如果参数newLength小于该字符串缓冲区的当前长度。
该字符串缓冲区将被截断来包含恰好等于由参数newLength给出的字符数。
append
publicsynchronizedStringBufferappend(Objectobj):
把Object型参数的字符串表示添加到该字符串缓冲区。
StringBufferx=newStringBuffer().append("a").append(4).append("c").toString();
insert
publicsynchronizedStringBufferinsert(intoffset,Objectobj):
把Object型参数的字符串表示插入到字符串缓冲区。
reverse
publicsynchronizedStringBufferreverse():
该字符串缓冲区的字符序列被其反向字符序列所替换。
toString
publicStringtoString():
转换为一个表示该字符串缓冲区数据的字符串。
分配一个新的String对象,并且用字符串缓冲区所表示的字符序列进行初始化。
于是此String被返回。
随后缓冲区发生的变化不再影响该String的内容。
3、日期类示例
1)获取服务器端当前日期:
importjava.util.Date;
DatemyDate=newDate();
2)获取当前年、月、日:
DatemyDate=newDate();
intthisYear=myDate.getYear()+1900;//thisYear=2009
intthisMonth=myDate.getMonth()+1;//thisMonth=10
intthisDate=myDate.getDate();//thisDate=30
3)按本地时区输出当前日期
DatemyDate=newDate();
out.println(myDate.toLocaleString());
输出结果为:
2003-5-30
4)按照指定格式打印日期
importjava.util.Date;
importjava.text.DateFormat;
DatedNow=newDate();
SimpleDateFormatformatter=
newSimpleDateFormat("Eyyyy.MM.dd'at'hh:
mm:
ssazzz");
System.out.println("Itis"+formatter.format(dNow));
输出的结果为:
Itis星期五2003.05.30at11:
30:
46上午CST
5)将字符串转换为日期
importjava.util.Date;
Stringinput="1222-11-11";
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
Datet=null;
try{
t=formatter.parse(input);
System.out.println(t);
}catch(ParseExceptione){
System.out.println("unparseableusing"+formatter);
}
输出结果为:
FriNov1100:
00:
00CST1222
6)计算日期之间的间隔getTime()函数返回日期与1900-01-0100:
00:
00相差的毫秒数
Importjava.util.Date;
importjava.text.DateFormat;
Stringinput="2003-05-01";
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
Dated1=null;
Dated2=newDate();longdiff=d2.getTime()-d1.getTime();
out.println("Differenceis"+(diff/(1000*60*60*24))+"days.");
输出结果为:
Differenceis29days.
7)日期的加减运算
方法:
用Calendar类的add()方法
Calendarnow=Calendar.getInstance();
SimpleDateFormatformatter=newSimpleDateFormat("Eyyyy.MM.dd'at'hh:
mm:
ssazzz");
out.println("Itisnow"+formatter.format(now.getTime()));
now.add(Calendar.DAY_OF_YEAR,-(365*2));
out.println("
");
out.println("Twoyearsagowas"+formatter.format(now.getTime()));
输出结果为:
Itisnow星期五2003.05.30at01:
45:
32下午CST
Twoyearsagowas星期三2001.05.30at01:
45:
32下午CST
8)比较日期
方法:
用equals()、before()、after()方法
DateFormatdf=newSimpleDateFormat("yyy-MM-dd");
Dated1=df.parse("2000-01-01");
Dated2=df.parse("1999-12-31");
Stringrelation=null;
if(d1.equals(d2))
relation="thesamedateas";
elseif(d1.before(d2))
relation="before";
else
relation="after";
System.out.println(d1+"is"+relation+''+d2);
输出结果为:
SatJan0100:
00:
00CST2000isafterFriDec3100:
00:
00CST1999
§1.2实验题目
1、使用类String类的分割split将字符串“SolutionstoselectedexercisescanbefoundintheelectronicdocumentTheThinkinginJavaAnnotatedSolutionGuide,availableforasmallfeefromBruceEckel”单词提取输出。
单词以空格或,分割。
参照课本P10例2.5
运行代码:
packageEX1_1;
publicclassEX1_1{
publicstaticvoidmain(String[]args){
Stringstr1=newString("SolutionstoselectedexercisescanbefoundintheelectronicdocumentTheThinkinginJavaAnnotatedSolutionGuide,availableforasmallfeefromBruceEckel");
String[]str2=str1.split("|,");
for(inti=0;iSystem.out.println(str2[i]);
}
}
运行截图:
2、调试p14例2.8,将程序加上注释。
运行代码:
packageEX1_2;
publicclassEX1_2{
publicstaticvoidstringRepalce(Stringtext){
text=text.replace('j','i');//替换函数把j替换成i
}
publicstaticvoidbufferRepalce(StringBuffertext){
text=text.append("EE");//把Object型参数的字符串表示添加到该字符串缓冲区
}
publicstaticvoidmain(String[]args){
Stringts=newString("java");//字符型
StringBuffertb=newStringBuffer("java");//StringBuffer型
stringRepalce(ts);//调用函数
bufferRepalce(tb);
System.out.println(ts+""+tb);//打印输出
}}
运行截图:
stringRepalce函数中传进来的只是形参,是对原值的拷贝,原值不改变。
bufferRepalce函数是对字符串缓冲区进行修改,是对原值的修改,故发生改变。
3、调试p15例2.10,将程序加上注释。
运行代码:
packageEX1_3;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassEX1_3{
publicstaticvoidmain(String[]args){
SimpleDateFormatformat1=newSimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//SimpleDateFormat指定格式输出
SimpleDateFormatformat2=newSimpleDateFormat("yy/MM/dd/HH:
mm");
SimpleDateFormatformat3=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
SimpleDateFormatformat4=newSimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒E");
Datedate=newDate();
System.out.println(format1.format(date));//格式化输出
System.out.println(format2.format(date));
System.out.println(format3.format(date));
System.out.println(format4.format(date));
System.out.println(date.toString());//默认输出格式
}
}
运行截图:
4、设计一个程序计算2010-05-01日与系统当前日期相差的天数。
参照题3与书本上P17完成。
运行代码:
packageEX1_4;
importjava.util.Date;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
publicclassEX1_4{
publicstaticvoidmain(String[]args){
Stringinput="2010-05-01";
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
Dated1=null;
Dated2=newDate();
try{
d1=formatter.parse(input);
}catch(ParseExceptione){
e.printStackTrace();
}
longdiff=d2.getTime()-d1.getTime();
System.out.println("Differenceis"+(diff/(1000*60*60*24))+"days.");
}
}
运行截图:
5、设计一个类Student,类的属性有:
姓名,学号,出生日期,性别,所在系等。
并生成学生类对象数组。
按照学生的姓名将学生排序输出。
使用String类的compareTo方法。
1)、定义学生类
classStudent{
privateStringsno,sname,sbirth,ssex,sdept;//构造函数,set-get函数
}
2)、创建一个测试类
publicclassEx1_2{
publicStudent[]initStudent(){//初始化学生信息
Students[]=newStudent[5];
String[]names={"zhou","zhang","liu","li","xu"};
...//定义几个数组放置属性信息
for(inti=0;is[i]=newStudent(nos[i],names[i],births[i],sess[i],depts[i]);
returns;
}
publicvoidsortStudent(Student[]s){//排序按照姓名,选择法
for(inti=0;iintmin=i;
for(intj=i+1;jif((s[min].getSname().compareTo(s[j].getSname())>0)min=j;
if(min!
=i){
Studentt=s[i];s[i]=s[min];s[min]=t;
}
}
}
publicvoiddispStudent((Student[]s){//输出学生信息
..
}
publicstaticvoidmain(String[]args){
Ex1_2obj=newEx1_2();
Student[]s=obj.initStudent();
obj.sortStudent(s);
obj.dispStudent(s);
}
}
运行代码:
packageEX1_5;
publicclassStudent{
privateStringsno,sname,sbirth,ssex,sdept;
Student(Stringsno,Stringsname,Stringsbirth,Stringssex,Stringsdept){
this.sno=sno;
this.sname=sname;
this.sbirth=sbirth;
this.ssex=ssex;
this.sdept=sdept;
}
publicStringgetSno(){
returnsno;
}
publicvoidsetSno(Stringsno){
this.sno=sno;
}
publicStringgetSname(){
returnsname;
}
publicvoidsetSname(Stringsname){
this.sname=sname;
}
publicStringgetSbirth(){
returnsbirth;
}
publicvoidsetSbirth(Stringsbirth){
this.sbirth=sbirth;
}
publicStringgetSsex(){
returnssex;
}
publicvoidsetSsex(Stringssex){
this.ssex=ssex;
}
publicStringgetSdept(){
returnsdept;
}
publicvoidsetSdept(Stringsdept){
this.sdept=sdept;
}
}
packageEX1_5;
publicclassTest{
publicStudent[]initStudent(){//初始化学生信息
Students[]=newStudent[5];
String[]snos={"20101706","20101707","20101708","20101709","20101710"};
String[]names={"gaojian","cuichengdi","huangyongsheng","huangwei","pengchonglin"};
String[]births={"1990-01-01","1990-01-02","1990-01-03","1990-01-04","1990-01-05"};
String[]sess={"男","男","男","女","男"};
String[]depts={"计算机","数学","英语","测控","经济"};
for(inti=0;is[i]=newStudent(snos[i],names[i],births[i],sess[i],depts[i]);
returns;
}
publicvoidsortStudent(Student[]s){//排序按照姓名,选择法
for(inti=0;iintmin=i;
for(intj=i+1;jif((s[min].getSname().compareTo(s[j].getSname())>0))
min=j;
if(min!
=i){
Studentt=s[i];
s[i]=s[min];
s[min]=t;
}
}
}
publicvoiddispStudent(Student[]s){
for(inti=0;iSystem.out.println(s[i].getSno()+""+s[i].getSname()+""+s[i].getSbirth()+""+s[i].getSsex()+""+s[i].getSdept());
}
}
publicstaticvoidmain(String[]args){
Testobj=newTest();
Student[]s=obj.initStudent();
obj.sortStudent(s);
obj.dispStudent(s);
}
}
运行截图:
6、使用日历类等相关方法按截图做出一个日历参照书本示例,研究其中代码回顾与复习利用JavaSwing编程。
参考:
以下函数根据输入的年和月计算相应的数字
publicvoi