网络编程技术实验指导书新版1.docx
《网络编程技术实验指导书新版1.docx》由会员分享,可在线阅读,更多相关《网络编程技术实验指导书新版1.docx(50页珍藏版)》请在冰豆网上搜索。
网络编程技术实验指导书新版1
《网络编程技术》实验指导书
计算机科学与软件学院
李建伟
2015(新版)
实验一:
Java基本语法
实验目的:
了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
实验要求:
1、编写一个声明Java不同数据类型变量的程序。
2、编写使用不同选择结构的程序。
3、编写使用不同循环结构结构的程序。
实验内容:
1、声明不同数据类型变量
1)编写声明不同数据类型变量的程序
publicclassSimpleTypes{
publicstaticvoidmain(Stringargs[]){
byteb=0x55;
shorts=0x55ff;
inti=1000000;
longl=0xfffL;
charc='c';
floatf=0.23F;
doubled=0.7E-3;
booleanbool=true;
System.out.println("b="+b);
System.out.println("s="+s);
System.out.println("i="+i);
System.out.println("l="+l);
System.out.println("c="+c);
System.out.println("f="+f);
System.out.println("d="+d);
System.out.println("bool="+bool);
}
编译并运行该程序,分析程序的运行结果。
分析:
16进制数以0x开头,所以b的值是5*16+5*1。
Float要以F或f结尾。
D为科学技术法所以自动转换位数。
这里所有的计算值都在此数据类型的取值范围内。
1)Integer类在某对象中打包了原始类型为int的值。
Integer类型对象包含int型的单个域。
此外,此类提供了许多方法,可以将int型转换为string型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。
publicclassIntegerDemo
{
publicstaticvoidmain(Stringargs[])
Integer[]array={newInteger(20),newInteger(40),newInteger("110")};
for(inti=0;i{System.out.println(Integer.toBinaryString(array[i].intValue())+"\t");System.out.println(Integer.toHexString(array[i].intValue())+"\t");System.out.println(Integer.toOctalString(array[i].intValue())+"\n");}}}编译并运行该程序,分析程序的运行结果分析:定义看三个Integer为20,40,110分别以2进制,16进制,8进制输出定阿斯顿 2、使用选择结构使用if...else语句1)编写源程序文件,代码如下。publicclassTestIf{publicstaticvoidmain(Stringargs[]){booleanleap;intyear=2005;if((year%4==0&&year%100!=0)||(year%400==0))System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");year=2008;//方法2if(year%4!=0)leap=false;elseif(year%100!=0)leap=true;elseif(year%400!=0)leap=false;elseleap=true;if(leap==true)System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");year=2050;//方法3if(year%4==0){if(year%100==0){if(year%400==0)leap=true;elseleap=false;}elseleap=false;}elseleap=false;if(leap==true)System.out.println(year+"年是闰年");elseSystem.out.println(year+"年不是闰年");}}2)编译运行程序,分析程序的运行结果。分析:以三种不同的条件判断格式分别判断三个年份是不是闰年 使用switch语句1)编写程序用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息classSwitchTest{publicstaticvoidmain(Stringargs[])throwsjava.io.IOException{chara;System.out.println("Enteranumberfrom1--3:");a=(char)System.in.read();switch(a){case'1':System.out.println("winaCar!");break;case'2':System.out.println("pickedthegoat");break;case'3':System.out.println("gettokeepyour100");break;default:System.out.println("entry");}}}2)编译运行程序,分析程序的运行结果。分析:根据1.2.3输入顺序的输出不同输出不同结果。当不是123时,输出entry 3、使用循环结构使用for语句1)程序源代码如下:classTestFor{publicstaticvoidmain(Stringargs[]){intfahr,cels;System.out.println("CelsiusFahrenheit");for(cels=0;cels<=100;cels+=5){fahr=cels*9/5+32;System.out.println(cels+""+fahr);}chara;outer://thisisthelabelfortheouterloopfor(inti=0;i<10;i++)for(intj=0;j<10;j++){a=(char)System.in.read();if(a=='b')breakouter;if(a=='c')continueouter;}}}2)改正源程序中错误,分析错误原因和程序的运行结果。分析:错误原因为未处理的异常类型,需要添加一个抛出声明publicstaticvoidmain(Stringargs[])throwsIOException{使用while语句1)程序源代码如下:importjava.io.*;TestWhile{publicstaticvoidmain(Stringargs[])throwsIOException{charch;System.out.println("按1/2/3数字键可得大奖!");System.out.println("按空格键后回车可退出循环操作.");while((ch=(char)System.in.read())!=''){System.in.skip(2);//跳过回车键switch(ch){case'1':System.out.println("恭喜你得大奖,一辆汽车!");break;case'2':System.out.println("不错呀,你得到一台笔记本电脑!");break;case'3':System.out.println("没有白来,你得到一台冰箱!");break;default:System.out.println("真不幸,你没有奖品!下次再来吧。");}}}}请编译运行程序,分析程序的运行结果。多重循环,输出九九乘法表的程序。publicclassTestMul{publicstaticvoidmain(Stringargs[]){inti,j,n=9;System.out.print("*|");for(i=1;i<=n;i++)System.out.print(""+i);System.out.print("\n-------|");for(i=1;i<=n;i++)System.out.print("----");System.out.println();for(i=1;i<=n;i++){System.out.print(""+i+"|");for(j=1;j<=i;j++)System.out.print(""+i*j);System.out.println();}}}编译运行程序,分析程序的运行结果。4、编程题,编写程序并写出运行结果1)用分支语句编程,输入一个学生成绩,给出相应等级:90~100优80~89良70~79中69~60及格0~59不及格 2)采用for循环求1至1000之内的所有“完全数”。所谓“完全数”是指一个数,恰好等于它的因子之和。例如,6是一个完全数,因为6的因子为1、2、3,而6=1十2十30 3)一个整数的各位数字之和能被9整除,则该数也能被9整除。编程验证给定的整数能否被9整除。4)已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。实验二:面向对象编程 实验目的:通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。实验要求:1、编写程序实现类的定义和使用。2、编写不同成员和不同成员方法修饰方法的程序。3、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。4、编写接口的定义和使用的程序。5、编写包的定义和使用的程序。实验内容:1、类的定义和使用创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。其中有:a.构造函数初始化所有数据成员b.Area():计算桌面的面积c.Display():在屏幕上输出所有数据成员的值d.ChangeWeight(int):改变桌子重量的函数e.在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。2、修饰符的使用有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。Public,private,protected,package,static,final,transient,volatile。程序功能:通过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下。classStaticDemo{staticintx;inty;publicstaticintgetX(){returnx;}publicstaticvoidsetX(intnewX){x=newX;}publicintgetY(){returny;}publicvoidsetY(intnewY){y=newY;}}publicclassTestDemo{publicstaticvoidmain(String[]args){System.out.println("静态变量x="+StaticDemo.getX());System.out.println("实例变量y="+StaticDemo.getY());StaticDemoa=newStaticDemo();StaticDemob=newStaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("静态变量a.x="+a.getX());System.out.println("实例变量a.y="+a.getY());System.out.println("静态变量b.x="+b.getX());System.out.println("实例变量b.y="+b.getY());}}对上面的源程序进行编译,查错并运行。3、继承和多态的作用新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。新类还可添加新的变量和方法,这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。Java提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。多态使程序简洁,为程序员带来很大便利。在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。1)创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(沙鼠),Hamster(大颊鼠)等的一个继承分级结构。在基础类中,提供适用于所有Rodent的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。要求把Rodent定义成为抽象类。Rodent类中要求的成员变量有name,成员方法有getName(),setName(Stringname)和方法run()。其中方法run()为抽象方法。Mouse(老鼠)继承Rodent(啮齿动物),Gerbil(沙鼠),Hamster(大颊鼠)继承Mouse(老鼠)类。4、接口的定义和使用Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。它的主要作用是可以帮助我们实现类似于类的多重继承的功能。Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。故在Java中,通常把对接口功能的“继承”称为实现。Java中声明接口的语法如下:[public]Interface接口名[extends父接口名列表]{//接口体://常量域声明[public][static][final]域类型域名=常量值;//抽象方法声明[public][abstract][native]返回值方法名(参数列表)[throw异常列表];}某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。●程序如下:interfaceTest.javapublicclassInterfaceTest{publicstaticvoidmain(Stringargs[]){doublex;cirley=newcircle;y.cirdle(2);x=y.calculate.area();system.out.println(“\n面积为:”+x+“\n”);}}interfacecal-area{doublePI=3.14;doublecalculate-atea();}classcircleimplementscal-area{doubler;circle(doubler){this.r=r;}publicdoublecalculate-area(){returnPI*r*r;}}改正程序中的错误,编译并运行上述程序,分析程序的运行结果。5、包的定义和使用●创建自定义包Mypackage在存放源程序的文件夹中建立一个子文件夹Mypackage。例如,在“E:\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量classpath的路径,例如:E:\j2sdk1.4.2_01\lib;E:\java\程序●在包中创建类YMD.java程序功能:在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。源代码如下packageMypackage;//声明存放类的包importjava.util.*;//引用java.util包publicclassTest_YMD{privateintyear,month,day;publicstaticvoidmain(String[]arg3){}publicTest_YMD(inty,intm,intd){year=y;month=(((m>=1)&(m<=12))?m:1);day=(((d>=1)&(d<=31))?d:1);}publicTest_YMD(){this(0,0,0);}publicstaticintthisyear(){returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份}publicintyear(){returnyear;//返回年份}publicStringtoString(){returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日}}编译Test_YMD.java文件,分析运行结果。●编写使用包Mypackage中Test_YMD类的程序YMD_2.java程序功能:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了Test_YMD的方法来计算年龄。源代码如下importMypackage.Test_YMD;//引用Mypackage包中的KY4_1_YMD类publicclassYMD_2{privateStringname;privateTest_YMDbirth;publicstaticvoidmain(Stringargs[]){YMD_2a=newYMD_2("张驰",1990,1,11);a.output();}publicYMD_2(Stringn1,Test_YMDd1){name=n1;birth=d1;}publicYMD_2(Stringn1,inty,intm,intd){this(n1,newTest_YMD(y,m,d));//初始化变量与对象}publicintage()//计算年龄{returnTest_YMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄}publicvoidoutput(){System.out.println("姓名:"+name);System.out.println("出生日期:"+birth.toString());System.out.println("今年年龄:"+age());}}编译并运行程序,分析程序的运行结果。6、编程题,编写程序并写出运行结果
System.out.println(Integer.toBinaryString(array[i].intValue())+"\t");
System.out.println(Integer.toHexString(array[i].intValue())+"\t");
System.out.println(Integer.toOctalString(array[i].intValue())+"\n");
编译并运行该程序,分析程序的运行结果
定义看三个Integer为20,40,110
分别以2进制,16进制,8进制输出定阿斯顿
2、使用选择结构
使用if...else语句
1)编写源程序文件,代码如下。
publicclassTestIf{
booleanleap;
intyear=2005;
if((year%4==0&&year%100!
=0)||(year%400==0))
System.out.println(year+"年是闰年");
else
System.out.println(year+"年不是闰年");
year=2008;//方法2
if(year%4!
=0)
leap=false;
elseif(year%100!
leap=true;
elseif(year%400!
if(leap==true)
year=2050;//方法3
if(year%4==0){
if(year%100==0){
if(year%400==0)
2)编译运行程序,分析程序的运行结果。
以三种不同的条件判断
格式分别判断三个年份
是不是闰年
使用switch语句
1)编写程序用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息
classSwitchTest{
publicstaticvoidmain(Stringargs[])throwsjava.io.IOException
{chara;
System.out.println("Enteranumberfrom1--3:
");
a=(char)System.in.read();
switch(a){
case'1':
System.out.println("winaCar!
");break;
case'2':
System.out.println("pickedthegoat");break;
case'3':
System.out.println("gettokeepyour100");
break;
default:
System.out.println("entry");
根据1.2.3输入顺序
的输出不同输出不
同结果。
当不是123
时,输出entry
3、使用循环结构
使用for语句
1)程序源代码如下:
classTestFor{
intfahr,cels;
System.out.println("CelsiusFahrenheit");
for(cels=0;cels<=100;cels+=5)
{fahr=cels*9/5+32;
System.out.println(cels+""+fahr);}
chara;
outer:
//thisisthelabelfortheouterloop
for(inti=0;i<10;i++)
for(intj=0;j<10;j++)
{a=(char)System.in.read();
if(a=='b')
breakouter;
if(a=='c')
continueouter;
2)改正源程序中错误,分析错误原因和程序的运行结果。
错误原因为未处理的异常类型,需要添加一个抛出声明
publicstaticvoidmain(Stringargs[])throwsIOException{
使用while语句
importjava.io.*;
TestWhile{
charch;
System.out.println("按1/2/3数字键可得大奖!
System.out.println("按空格键后回车可退出循环操作.");
while((ch=(char)System.in.read())!
='')
System.in.skip
(2);//跳过回车键
switch(ch){
System.out.println("恭喜你得大奖,一辆汽车!
System.out.println("不错呀,你得到一台笔记本电脑!
System.out.println("没有白来,你得到一台冰箱!
System.out.println("真不幸,你没有奖品!
下次再来吧。
请编译运行程序,分析程序的运行结果。
多重循环,输出九九乘法表的程序。
publicclassTestMul
inti,j,n=9;
System.out.print("*|");
for(i=1;i<=n;i++)
System.out.print(""+i);
System.out.print("\n-------|");
System.out.print("----");
System.out.println();
System.out.print(""+i+"|");
for(j=1;j<=i;j++)
System.out.print(""+i*j);
编译运行程序,分析程序的运行结果。
4、编程题,编写程序并写出运行结果
1)用分支语句编程,输入一个学生成绩,给出相应等级:
90~100优
80~89良
70~79中
69~60及格
0~59不及格
2)采用for循环求1至1000之内的所有“完全数”。
所谓“完全数”是指一个数,恰好等于它的因子之和。
例如,6是一个完全数,因为6的因子为1、2、3,而6=1十2十30
3)一个整数的各位数字之和能被9整除,则该数也能被9整除。
编程验证给定的整数能否被9整除。
4)已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。
实验二:
面向对象编程
通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。
1、编写程序实现类的定义和使用。
2、编写不同成员和不同成员方法修饰方法的程序。
3、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。
4、编写接口的定义和使用的程序。
5、编写包的定义和使用的程序。
1、类的定义和使用
创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。
其中有:
a.构造函数初始化所有数据成员
b.Area():
计算桌面的面积
c.Display():
在屏幕上输出所有数据成员的值
d.ChangeWeight(int):
改变桌子重量的函数
e.在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。
2、修饰符的使用
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。
常用的修饰符如下。
Public,private,protected,package,static,final,transient,volatile。
程序功能:
通过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下。
classStaticDemo{
staticintx;
inty;
publicstaticintgetX(){
returnx;
publicstaticvoidsetX(intnewX){
x=newX;
publicintgetY(){
returny;
publicvoidsetY(intnewY){
y=newY;
publicclassTestDemo{
publicstaticvoidmain(String[]args){
System.out.println("静态变量x="+StaticDemo.getX());
System.out.println("实例变量y="+StaticDemo.getY());
StaticDemoa=newStaticDemo();
StaticDemob=newStaticDemo();
a.setX
(1);
a.setY
(2);
b.setX(3);
b.setY(4);
System.out.println("静态变量a.x="+a.getX());
System.out.println("实例变量a.y="+a.getY());
System.out.println("静态变量b.x="+b.getX());
System.out.println("实例变量b.y="+b.getY());
对上面的源程序进行编译,查错并运行。
3、继承和多态的作用
新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。
新类还可添加新的变量和方法,这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
被继承的类称为父类或超类(superclass),这个新类称为子类。
Java提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。
所以,通常要对子类进行扩展,即添加新的属性和方法。
这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。
继承的意义就在于此。
类的继承发生在多个类之间,而类的多态只发生在同一个类上。
在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。
这种现象称为类的多态。
多态使程序简洁,为程序员带来很大便利。
在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。
这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。
类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。
1)创建Rodent(啮齿动物):
Mouse(老鼠),Gerbil(沙鼠),Hamster(大颊鼠)等的一个继承分级结构。
在基础类中,提供适用于所有Rodent的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。
创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。
要求把Rodent定义成为抽象类。
Rodent类中要求的成员变量有name,成员方法有getName(),setName(Stringname)和方法run()。
其中方法run()为抽象方法。
Mouse(老鼠)继承Rodent(啮齿动物),Gerbil(沙鼠),Hamster(大颊鼠)继承Mouse(老鼠)类。
4、接口的定义和使用
Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。
它的主要作用是可以帮助我们实现类似于类的多重继承的功能。
Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。
故在Java中,通常把对接口功能的“继承”称为实现。
Java中声明接口的语法如下:
[public]Interface接口名[extends父接口名列表]
{//接口体:
//常量域声明
[public][static][final]域类型域名=常量值;
//抽象方法声明
[public][abstract][native]返回值方法名(参数列表)[throw异常列表];
某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。
●程序如下:
interfaceTest.java
publicclassInterfaceTest
{doublex;
cirley=newcircle;
y.cirdle
x=y.calculate.area();
system.out.println(“\n面积为:
”+x+“\n”);
interfacecal-area
doublePI=3.14;
doublecalculate-atea();
classcircleimplementscal-area{
doubler;
circle(doubler)
{this.r=r;
publicdoublecalculate-area()
{returnPI*r*r;
改正程序中的错误,编译并运行上述程序,分析程序的运行结果。
5、包的定义和使用
●创建自定义包Mypackage
在存放源程序的文件夹中建立一个子文件夹Mypackage。
例如,在“E:
\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:
\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。
注意:
包名与文件夹名大小写要一致。
再添加环境变量classpath的路径,例如:
E:
\j2sdk1.4.2_01\lib;E:
\java\程序
●在包中创建类
YMD.java程序功能:
在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。
源代码如下
packageMypackage;//声明存放类的包
importjava.util.*;//引用java.util包
publicclassTest_YMD{
privateintyear,month,day;
publicstaticvoidmain(String[]arg3){}
publicTest_YMD(inty,intm,intd){
year=y;
month=(((m>=1)&(m<=12))?
m:
1);
day=(((d>=1)&(d<=31))?
d:
publicTest_YMD(){
this(0,0,0);
publicstaticintthisyear(){
returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份
publicintyear(){
returnyear;//返回年份
publicStringtoString(){
returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日
编译Test_YMD.java文件,分析运行结果。
●编写使用包Mypackage中Test_YMD类的程序
YMD_2.java程序功能:
给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。
程序使用了Test_YMD的方法来计算年龄。
importMypackage.Test_YMD;//引用Mypackage包中的KY4_1_YMD类
publicclassYMD_2
privateStringname;
privateTest_YMDbirth;
YMD_2a=newYMD_2("张驰",1990,1,11);
a.output();
publicYMD_2(Stringn1,Test_YMDd1)
name=n1;
birth=d1;
publicYMD_2(Stringn1,inty,intm,intd)
this(n1,newTest_YMD(y,m,d));//初始化变量与对象
publicintage()//计算年龄
returnTest_YMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄
publicvoidoutput()
System.out.println("姓名:
"+name);
System.out.println("出生日期:
"+birth.toString());
System.out.println("今年年龄:
"+age());
编译并运行程序,分析程序的运行结果。
6、编程题,编写程序并写出运行结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1