网络编程技术实验指导书新版1.docx
- 文档编号:29015229
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:50
- 大小:97.84KB
网络编程技术实验指导书新版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+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2008;//方法2 if(year%4! =0) leap=false; elseif(year%100! =0) leap=true; elseif(year%400! =0) leap=false; else leap=true; if(leap==true) System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2050;//方法3 if(year%4==0){ if(year%100==0){ if(year%400==0) leap=true; else leap=false; } else leap=false; } else leap=false; if(leap==true) System.out.println(year+"年是闰年"); else System.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: //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语句 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.java publicclassInterfaceTest { 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、编程题,编写程序并写出运行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 技术 实验 指导书 新版
![提示](https://static.bdocx.com/images/bang_tan.gif)