Java 2简明教程-第2版 程序举例源代码.docx
/3IDl-lpublicclasshellopublicstaticvoidmain(Stringargs)System,out.printin(z'HelloJava!);)/程序l-2importjava.awt.Graphics;/指明要使用GraPhiCS类,类似于CC+中的#19111(12语句importjava,applet.Applet;/指明要使用APPlet类publicclasssayhelloextendsAppletpublicvoidpaint(Graphicsg)g.drawString("HelloJava!”,35,30);)/3IDd1-3publicclassnewPrintpublicstaticvoidmain(Stringargs)inti=100;charch",A,;doubled=9.8999;Strings="ABCD"System,out.printf(z,%d%c%f%s”,i,ch,d,s);)/程序l-4importjava.awt.Graphics;/程序要应用GraPhiCS类importjava.applet.Applet;/程序要应用系统提供的APPIet类/此处的空行是为了使程序显得条理分明publicclasssayhelloextendsAppletpublicvoidpaint(Graphicsg)intXPoS=40,YPoS=40;定义输出信息的X坐标和Y坐标/此处的空行是为了使程序显得条理分明g.drawString(zzHelloJava!”,XPos,YPos);/程序2-1publicclassTest_Int/测试整型变量的最大最小值publicstaticvoidmain(Stringargs)System,out.printin(,zbyte最大值-,z+Byte.N1AX_VA1.UE);System,out.printin(,byte最小值-z,+Byte.MIN_VA1.UE);"+Short.MX-VA1.UE);,z+Short.MIN_VA1.UE);System.out.println(z,short最大值System.out.println(zzshort最小值System,out.println(zzintSystem,out.println(z*int最大值="+Integer.MXJA1.UE);最小值="+Integer.MIN_VA1.UE);System,out.PrintIn("longSystem,out.PrintIn("long)最大值="+1.ong.MAX_VA1.UE);最小值="+1.ong.MIN_VA1.UE);/程序2-2publicclassTest_char/测试字符型变量的最大最小值publicstaticvoidmain(Stringargs)System,out.printin(z,char最大值二zz+(int)Character.MAXVA1.UE);System.out.printin(z,char最小值二,z+(int)Character.MIN_VA1.UE);最大值二最小值二正无限大/程序2-3publicclassTest_Floatpublicstaticvoidmain(StringSystem,out.printin(,fIoatSystem,out.println(,fIoatSystem,out.printin(Afloat"+Float.PoSITlVE_INFINITY);System,out.printin(,zfIoat“+Float.NEGATIVE_INFINITY);System,out.printin(z,doubleSystem,out.println(z,doubleSystem,out.println(zzdouble"+Double.POSITIVEINFINITY);/测试浮点型变量的最大最小值args)最大值="+Float.MAX_VA1.UE);最小值="+Float.MIN_VA1.UE);正无限大=负无限大二“+Double.MAX_VA1.UE);"+Double.MIN_VA1.UE);System,out.printin(,double负无限大="+Double.NEGATIVE_INFINITY);/程序2-4classTest/定义一个类intValue;类中的变量未赋值,默认就是0publicclassTestVarpublicstaticvoidmain(Stringargs)intx=100;此处的X必须赋值,否则无法通过编译Testobj=newTest();/为对象赋值,后续章节将讲解该处代码的含义System,out.println(z,obj.Value=+obj.Value+x=+x);)/3ID2-5publicclassTest_Arraypublicstaticvoidmain(Stringargs)inta=1,2,3,b;b=a;for(intfor(inti=0;i<3;i+)i=0;i<3;i+)bi÷+;System,out.println(ai);/程序2-6publicclassTest_Array_lenpublicstaticvoidmain(Stringargs)inta=newint6;6个元素的空间SyStem.out.println(数组长度=+a.length);/分配了/数组长度为6for(inti=0;i<a.length;i+÷)System,out.print(ai+zz);/程序2-7publicclassTest_Array2publicstaticvoidmain(Stringargs)inta;a=newint2;a0-newint3;al-newint6;System,out.println(z,aSystem,out.printin(zza0System,out.println(zzal/定义一个引用a/产生a0和al两个引用/给引用a0产生对象/给引用al产生对象的长度=zz+a.length);的长度二+a0.length);的长度二+al.length);/程序2-8classtestintx;publicclassTest_Paras/测试参数传递问题statictestfun(testo,inty)/对象类型按引用传递,原子类型变量按值传递o.x=20;/修改了对象的数据成员y=l;/修改了y的值returno;)publicstaticvoidmain(Stringargs)testobjl,obj2;intVal=3;objl=newtest();/产生一个对象objl.x=100;/将对象x的值设置为100obj2=fun(objl,Val);System.out.println(,objl.x=+Objl.x+“obj2.x=+obj2.x+Val=,+Val);)/程序2-9publicclassTest_Operatorpublicstaticvoidmain(Stringargs)intiOne,iTwo;doubled_0ne,d_Two;i_0ne=2;i_Two-i_0ne+;d_0ne=6.3;d_Two二d_0ne%2;/浮点数据取模运算System,out.printin(i-0ne+,z+i_Two+/z+d_Two);/程序2-10classnumberintx;/关系运算符用于原子类型变量和对象类型变量publicclassFelationalOperatorpublicstaticvoidmain(Stringargs)numbernl,n2;nl=newnumber();/生成对象nln2=newnumber();/生成对象n2nl.x=l;n2.x=l;if(nl.x=n2.x)/关系运算符用于原子类型变量System.out.Println(对象的数据成员X相等!);if(nl-n2)/关系运算符也能用于对象System,out.printin(z,nl和n2是一个对象!”);elseSystem,out.printin(z,nl和n2不是一个对象!”);/程序2T1publicclassshortcutstaticbooleantestne(intSystem,out.printin(x+zzreturnx<1;/测试逻辑表达式短路问题x)<+1+(<l);/注意此表达式staticbooleantestTwo(intx)System,out.printin(x+z,<"+1+"+(x<2);returnx<2;publicstaticvoidmain(Stringargs)if(testne(6)&&testTwo(l)System,out.PrintIr("表达式为真”);elseSystem.out.Println(表达式为假);)/程序2-12publicclassbitsOperatorpublicstaticvoidmain(Stringargs)inta=-2,b;charch=,b',c;b=a>>>30;c=(char)(ch>>l);/必须执行类型强制转换System,out.println(,a=+b+c=+c);)/程序2-13publicclasstestcommpublicstaticvoidmain(Stringargs)intval=-2;System,out.printin(val>0?1:"NO");/此行无法通过编译/程序3-1importjava.awt.*;importjava,applet.*;publicclassCompareNumbersextendsApplet1.abellabl,lab2;TextFieldinputl,input2;intnuml,num2;publicvoidinit()labl=new1.abe1("输入第1个整数);/产生第1个标签对inputl=newTextField(IO);/产生第1个文本框对象lab2=new1.abe1(输入第2个整数);input2=newTextField(IO);add(Iabl);/将标签Iabl对象放到网页上add(input1);/将文本框inputl对象放到网页上add(lab2);add(input2);)publicbooleanaction(Evente,Objecto)if(e.target=inputl;e.target=input2)numl=Integer.parselnt(inputl.getText();/获取文本框中的数值num2=Integer.parselnt(input2.getText();if(numl<num2)showStatus(numl+<+num2);elseif(numl>num2)showStatus(numl+z,>"+num2);elseshowStatus(numl+z,=,+num2);)returntrue;)/程序3-2publicclassjustVoweIs/判断一个字母是否为元音publicstaticvoidmain(Stringargs)charc;for(inti=0;i<100;i+)/随机产生100个字母,进行判断c=(char)(Math,random()*26÷,a,);System,out.print(c);switch(c)case'a,:case'e,:case,i,:case,o,:case,u,:System,out.PrintIn(是元音);break;case'y,:case;break;break;System,out.PrintIn("有时是元音")default:System,out.PrintIn(不是元音);/程序3-3importjava.awt.*;importjava,applet.*;publicclassScoreConvertextendsApplet1.abelprompt;TextFieldinput;intExcellent,Good,Middle,Pass,Failure;publicvoidinit()prompt=new1.abel("输入成绩”);input=newTextField(2);add(prompt);add(input);)publicvoidpaint(Graphicsg)g.drawString("各等级的人数25,40);,z+Excellent,25,55);“+Good,25,70);"+Middle,25,85);"+Pass,25,100);,+Failure,25,115);g.ClraWString(优秀g.CIraWString(良好g.drawString(中等g.drawString(及格g.drawString(不通过publicbooleanaction(Evente,Objecto)/从当前引发事件的对象。获取一个整数intScore=Integer.parselnt(o.toString();ShowStatus(z,z);input.setText(,z,z);switch(score/10)case10:case9:Excellent+;break;case8:Good+;break;case7:Middle+;break;case6:Pass+;break;case5:case4:case3:case2:case1:case0:Failure+;break;default:ShOwStatUS(输入有误,请重新输入!);显示错误信息)repaint();/注意:容易忘记的地方returntrue;)/程序3-4publicclassGenerateNumbers/产生10个60100之间的随机整数publicstaticvoidmain(Stringargs)inti=0,Intval=0;while(i<10)Int_val=(int)(Math,random()*(100-60)+60);System,out.printin(Int_val);i+;)/程序3-5publicclassGenerateDoub1eNumbers/产生一个大于0.9的随机数为止publicstaticvoidmain(Stringargs)doubled;dod=Math.random();System,out.println(d);while(d<0.9);)/程序3-6importjava.awt.*;importjava,applet.Applet;publicclassprintGraphicsextendsApplet/输出一个倒三角形publicvoidpaint(Graphicsg)intxpos,ypos=0;for(introw=6;row>=1;row)xpos=25;ypos+=15;for(intcolumn=l;column<=row;column+)g.drawString(zz*zz,xpos,ypos);xpos+=7;)/程序3-7publicclassbreakNDcontinue/break语句和COntinUe语句基本功能publicstaticvoidmain(Stringargs)for(inti=l;i<20;i+)if(i%9=0)break;if(i%3=l)continue;System,out.print(i+,tz,);)/程序3-8publicclasshellopublicstaticvoidmain(Stringargs)inti,j=0;outer:for(i=0;i<3;i+)for(j=0J<5J+÷)System,out.printin(i+z,+j);if(j=l)breakouter;/注意该语句)SyStem.out.printin(最终值:“+i+"+j);注意该语句的位置/程序4-1classpointintx,y;voidinit(inta,intb)/init是方法x=a;y=b;)publicclasstwoPointpublicstaticvoidmain(Stringargs)pointpl=newpoint();pointp2=newpoint();/生成了PI和p2两个对象pl.x=10;pl.y=20;p2.x=30;p2.y=40;System,out.println(,=+pl.x+y=+pl.y);System,out.println(,=+p2.x+y=+p2.y);)/程序4-2classIocintx=l;/实例变量voidprint1.ocVar()intx=25;/局部变量System,out.printin(z,nXinprint1.ocVaris:+x);+x;System,out.println(,zxinprint1.ocVaris:+x);)voidPrintInstanceVar()System,out.printin(z,11instancevariablexis:zz+x);x*=10;/实例变量xSystem,out.printin(,instancevariablexis:+x);)/endofclassIocpublicclasstestlnstanceVar/程序的主类publicstaticvoidmain(Stringargs)Iocobj=newIoc();intx=5;/局部变量xSystem,out.println(z,xinmainis:+x);obj.print1.ocVar();obj.PrintInstanceVar();System,out.printin(z/xinmainis:+x);)/程序4-3classpointintx,y;point(inta,intb)/构造函数与类同名x=a;y=b;/对实例变量赋值publicclassCreatePointpublicstaticvoidmain(Stringargs)pointp=newpoint(10,20);/生成对象System,out.printin(,X=+p.x+y=,+p.y);)/程序44classpoint/该类中没有定义构造函数intx,y;publicclassCreatePointpublicstaticvoidmain(Stringargs)pointp=newpoint();/调用系统默认构造函System,out.println(zzX=+p.x+y-+p.y);)/程序4-5classpointi11tx,y;point(inta,intb)/带参数的构造函数x=a;y=b;point()/不带参数的构造函数x=-l;y=-l;)publicclasstestPointpublicstaticvoidmain(Stringargs)pointpl=newpoint(10,20);pointp2=newpoint();y=+p1.y);y=,+p2.y);/this代表调用System,out.println(7/x=,+pl.x+System,out.println(zzx=+p2.x+/程序4-6classIntVectorintv;booleanequals(IntVectorother)if(this=other)equals()方法的那个对象returntrue;returnfalse;classtestlntVectorpublicstaticvoidmain(Stringargs)IntVectortl=newIntVector(),/产生一个对象t3=newIntVector(),t2=tl;t2和tl代表同一个对象System,out.printin(tl.equals(t2);/tl调用了equals方法System,out.printin(t3.equals(t2);/t3调用了equals方法/程序4-7importjava.awt.*;importjava,applet.*;classtimeprivateinthour,min,sec;time()SetHour(O);SetMin(O);setSec(O);timesetHour(inth)/注意该方法的返回值类型hour=(h>=0&&h<24)?h:0);returnthis;/将当前对象返回)timesetMin(intm)min=(m>=0&&m<60)?m:0);returnthis;timesetSec(ints)sec-(s>-0&&s<60)?s:O);returnthis;Stringtostring()returnhour+”:"+min+”:SeC;publicclasstimeToStringextendsApplet/程序的主类privatetimet;publicvoidinit()t-newtime();)publicvoidpaint(Graphicsg)t.setHour(18).setMin(30).setSec(20);/典型的级联调用g.drawString(z,timez+t.tostring(),25,45);)/程序4-8classpointintx,y;point(intx,inty)/POint类构造函数this,x=x;this,y=y;System.out.Println(父类构造函数被调用!);)classcircleextendspointintradius;circle(intr,intx,inty)/子类构造函数super(x,y);SUPer必须写在构造函数的第一行radius=r;System.out.Println("子类构造函数被调用!");)publicclasstestinherencepublicstaticvoidmain(Stringargs)circlecl;cl=newcircled,1,1);/程序4-9classpointintx,y;point()this(0,0);point(intx,inty)this,x=x;this,y=y;doublearea()return0;area)classcircleextendspointintradius;circle(intr,intx,inty)/Point类定义了求面积的方法/定义子类CirCIesuper(x,y);radius=r;/子类中定义的方法area与父类的area特征一样,即覆盖了父类的area()doublearea()returnMath.PI*radius*radius;/Math.PI是的一个double类型的常量)publicclasstestOverWritepublicstaticvoidmain(Stringargs)circlecl;cl=newcircled,1,1);System,out.printin(cl.area();/程序4-10classpointintx,y;point()this(0,0);point(intx,inty)this,x-x;this,y=y;doublearea()return0;/注意父类中的这个方法classcircleextendspointintradius;circle(intr,intx,inty)super(x,y);radius=r;doublearea(doublepi)/方法特征与父类中的不同returnpi*radius*radius;)publicclasstestOverWritepublicstaticvoidmain(Stringargs)circlecl;cl=newcircled,1,1);System,out.printin(cl.area();/程序4T1classpoint/默认情况下父类是ObjCCt类intx,y;point()this(0,0);point(intx,inty)this,x=x;this,y=y;doublearea()return0;/Point类定义了area方法)classcircleextendspoint/CirCIe类的父类是Point类intradius;circle(intr,intx,inty)super(x,y);radius=r;doublearea()/子类覆盖了父类的area方法returnMath.PI*radius*radius;publicclassdynamicalCallpublicstaticvoidmain(Stringargs)pointp=newpoint(2,2),newcircled,1,1);/注意这一行for(inti=0;i<p.length;i+)SySten.out.print(类名:,+pi.getClass().getName();System,out.print("父类:,z+pi.getClass().getsuperclass();System,out.printin(z,面积:"+pi.area();/程序4-12classBase/父类intx=l;/实例变量Xvoidprint()/定义了Print方法,输出当前对象的类名和变量XSyStem.out.printin(当前类为"+this.getClass().getName();SyStem.out.printin("对象的X="+this.X);classDerivedextendsBase/子类intx=2;/实例变量Xvoidprint()/覆盖了父类的Print方法,输出当前对象的类名和变量XSyStCn1.out.println("当前类为"+this.getClass().getName();SyStem.out.printin(对象的X="+this,x);)publicclassconfusionspublicstaticvoidmain(Stringargs)Baseobj=newDerived();obj.print();System,out.Println(对象的x="+obj.x);/程序4-13classpointintx,y;point(inta,intb)x=a;y=b;System,out.println(,pointconstructor:z*+getString();publicvoidfinalize()/增加的方法System,out.printlnC'pointfinalizer:z,+getString();)StringgetString()returnx="+x+"y=+y;classcircleextendspointintradius;circle(intr,inta,intb)super(a,b);radius=r;System,out.println(z,circleconstructor:z,+getString();)publicvoidfinalize()/增加的方法System,out.printin(z,circlefinalizer:z"+getString();StringgetString()returnsuper.getString()+radius=zz+radius;)publicclasstestFinalizepublicstaticvoidmain(Stringargs)pointcl,c2;cl=newcircled,1,1);c2=newcircle(2,2,2);cl=null;/cl,c2现在可以被垃圾收集器回收c2=null;System,gc();/调用垃圾收集器/程序4-14classpointstaticintcount;/定义静态变量,它是一个对象计数器intX,y;staticcount=0;/静态初始化块System,out.println(z,staticvariableisinitialized!);)point(inta,intb)count+;/对象计数器x-a;y=b;System,out.printl11C,Callpointconstructor!,);)publicclasstestStaticVariablepublicstaticvoidmain(Stringargs)pointcl-newpoint(0,0);System,out.println(z,Thereare+point,count+points");/使用静态变量)/程序4-15classpointstaticintcount;/定义静态变量intx,y;staticcount=0;System,out.printin(zzstaticvariableisinitialized!);)point(inta,intb)count+;/对象计数器x=a;y=b;System,out.printin(,Callpointconstructor!,z);staticintgetCount()/静态方法returncount;/写成this,count是错误的)publicclasstestStaticMethodpublicstaticvoidmain(Stringargs)pointcl=newpoint(0,0);pointc2=newpoint(1,1);System,out.println(,zThereare+point.getCount()+points,z);)/程序4-16classBasefinalintx=l;/形式1:final修饰实例变量voidprint(finalinty)/形式2:final修饰参数/y=0;/错误,final型变量不可出现在赋值号的左边System,out.println(x+y);publicclassfinalVariablespublicstaticvoidmain(Stringargs)finalintvar=100;/形式3:final修饰局部变量Baseobj-newBase();obj.print(var);)/程序4-17classdate/日期类intyear,mon,day;date(inty,intm,intd)year=y;/设置变量yearmon=(m>0&&m<13)?m:1;day=checkday(d);/设置变量day)intcheckday(intd)intdaydisp=0,31,28,31,3