版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE30南昌工程学院《面向对象程序设计(Java)》实验指导书09信息管理与信息系统专业雷金娥编2011年9月目录TOC\o"1-1"\h\z\u实验一JavaApplication程序的编辑、编译和运行 2实验二Java程序设计基础 4实验三类的封装 6实验四类的继承 7实验五类的多态 9实验六接口与实现接口的类 13实验七异常的抛出、捕获并处理 15实验八图形用户界面设计 20实验九线程设计 22实验十输入/输出流与文件操作 24实验十一网络通信 26实验十二数据库应用设计 29实验一JavaApplication程序的编辑、编译和运行一、实验目的1.熟悉JDK开发环境。
2.熟悉Edit编辑器的使用。
3.掌握JavaApplication的程序结构和开发过程。二、实验设备和仪器电脑三、实验内容及要求1.JDK开发环境
(1)JDK1.4.1开发环境安装在“C:\JDK1.4.1\”目录下。
(2)设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。
进入命令行(MS-DOS)方式,进行如下设置:
SETPATH=C:\JDK1.4.1\BIN;%PATH%
SETCLASSPATH=.;%CLASSPATH%
2.Edit编辑器3.掌握JavaApplication程序开发过程四、实验原理及步骤1.实验原理一个java应用程序是由若干个类组成的,其中最多能有一个public类。有且只能有一个类含有main方法。Java源程序的扩展名为java。Java源程序的名字必须和public类的类名相同,如果没有public类,只要和其中任一类的类名相同就行。编译java源程序会产生字节码(.class)文件,源程序有几个类就会产生几个class文件。运行时,只运行含有main方法的class文件。2.步骤(1)打开Edit编辑器。
(2)键入如下程序:
importjava.io.*;
publicclassHelloWorld1{
publicstaticvoidmain(Stringarg[]){
System.out.println("HelloWorld!");
}
}
(3)检查无误后(注意大小写)保存文件。可将文件保存在“D:\Java\”目录中,注意文件名为HelloWorld1.java。
(4)进入命令行(MS-DOS)方式,设定当前目录为“D:\Java\”,运行Java编译器:
D:\Java>javacHelloWorld1.java
(5)如果输出错误信息,则根据错误信息提示的错误所在行返回Edit编辑器进行修改。常见错误是类名与文件名不一致、当前目录中没有所需源程序、标点符号全角等。
如果没有输出任何信息或者出现“deprecation”警告,则认为编译成功,此时会在当前目录中生成HelloWorld1.class文件。
(6)利用Java解释器运行这个JavaApplication程序,并查看运行结果。
D:\Java>javaHelloWorld1五、实验结果分析及实验报告要求1.写出JAVA开发环境配置按步骤2.编写、运行一个简单的JAVA应用程序,将源代码写清楚
实验二Java程序设计基础一、实验目的1.掌握标识符的定义规则。
2.掌握表达式的组成。
3.掌握各种数据类型及其使用方法。
4.理解定义变量的作用,掌握定义变量的方法。
5.掌握各种运算符的使用及其优先级控制。6.掌握Java数组的声明、初始化以及使用方法,理解Java数组是Java对象的含义。7.掌握String类的常用成员方法。二、实验设备和仪器电脑三、实验内容及要求1.定义一个数组,具有以下方法:publicstaticintmax(inttable[]);publicstaticintmin(inttable[]);publicstaticvoidsort(inttable[]);publicstaticintindexOf(inttable[],intkey);publicstaticbooleanisSorted(inttable[]);2.找出一个二维数组的鞍点。3.判断该字符串是否是回文,回文是如下形式的字符串:abcdcba四、实验原理及步骤1.实验原理Java中数据类型分为基本数据类型与复合数据类型,相应地变量分为基本类型与引用类型。基本类型变量有8种,而类、接口和数组变量是引用类型。基本类型变量使用和C及C++完全一样,但引用类型的使用有点与C中的指针相同(注意Java中并没有指针的概念)。引用类型变量的使用有引用空间与数据空间的概念,当变量声明时只是给该变量分配引用空间(或可以理解为地址空间),数据空间并没有分配。例如定义:Mydatetoday;定义的变量名today为引用空间的变量名today=newMydate();实例化Mydate类的一个对象,也即产生了数据空间用于存放该对象的数据。并且将该对象的地址赋给today,这样对象名today就指向了相应的数据空间。数组的定义和使用举例inta[]=newint[6];程序的流程控制结构和C语言基本类同,有顺序结构、选择结构、循环结构。但初学面向对象编程容易犯程序结构上的毛病,许多同学编出的程序和面向过程语言的一样只是换成Java的语法。原则上面向对象编程的结构,应该以类为基本组织单位。2.步骤略五、实验结果分析及实验报告要求1.总结出Java基本语法和C语言语法的区别。2.写出上述三个程序代码。要求记录编译和执行Java程序当中的系统错误信息提成示,并给出解决办法。
实验三类的封装一、实验目的通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握面向对象程序设计的方法。二、实验设备和仪器电脑三、实验内容及要求编写Point类包括横坐标x,纵坐标y,声明构造方法和拷贝构造方法,声明若干get()和set()方法获得和设置坐标,声明move()方法将当前坐标移动若干位置。四、实验原理及步骤设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改使用修饰符来限定类的成员变量或成员方法的属性有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下:publicprivateprotectedpackagestaticfinaltransientvolatile不同修饰符的访问控制权限如表3.1所示。访问权限修饰符类子类包所有类和包public√√√√private√protected√√√package√√表3.1五、实验结果分析及实验报告要求将上述程序运行,写出运行结果,并分析。
实验四类的继承一、实验目的1.掌握类的继承方法。
2.掌握变量的继承。
3.掌握方法的继承。二、实验设备和仪器电脑三、实验内容及要求1掌握子类定义方法2理解成员变量的继承与隐藏3理解方法的继承四、实验原理及步骤类的继承性练习新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。Java提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。创建父类定义一个表示长方形的类Rectangle,其中包含两个private的double型的成员变量length和width分别表示长方形的长和宽,定义一个有参数的构造方法Rectangle(doublelength,doublewidth),在其中为长方形对象初始化,定义一个无参数的构造方法,在其中调用有参数的构造方法,使创建的对象的长和宽都为0。再定义用来求长方形周长的方法perimeter()和求面积的方法area()。创建子类定义一个长方体类Cuboid,使其继承Rectangle类,其中包含一个表示高的double型成员变量height;定义一个构造方法Cuboid(doublelength,doublewidth,doubleheight);再定义一个求长方体表面积的方法area(doubleheight)和求体积的方法volume()。编写一个名为CuboidTest的应用程序,求一个长、宽和高都为10的长方体的体积。五、实验结果分析及实验报告要求将上述程序运行,写出运行结果,并分析。
实验五类的多态一、实验目的1.掌握成员变量的隐藏和方法的覆盖;
2.掌握this和super关键字的使用;
3.理解final类和abstract类的含义,掌握如何定义和使用final类和abstract类;4.掌握多态的概念,二、实验设备和仪器电脑三、实验内容及要求1理解方法的重载2理解方法的覆盖类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。多态使程序简洁,为程序员带来很大便利。在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。方法的重载(1)程序功能:使用同名方法对两个、三个或用数组容纳的一组数进行排序(2)程序源代码如下。classIntSort{publicStringsort(inta,intb){if(a>b)returna+""+b;elsereturnb+""+a;}publicStringsort(inta,intb,intc){intswap;if(a<b){swap=a;a=b;b=swap;}if(a<c){swap=a;a=c;c=swap;}if(b<c){swap=b;b=c;c=swap;}returna+""+b+""+c;}publicStringsort(intarr[]){Strings="";intswap;for(inti=0;i<arr.length;i++)for(intj=0;j<arr.length-1;j++)if(arr[j]>arr[j+1]){swap=arr[j];arr[j]=arr[j+1];arr[j+1]=swap;}for(inti=0;i<arr.length;i++)s=s+arr[i]+"";returns;}}publicclassEXP3_11{publicstaticvoidmain(String[]args){IntSorts=newIntSort();inta=30,b=12,c=40;intarr[]={34,8,12,67,44,98,52,23,16,16};System.out.println("两个数的排序结果:"+s.sort(a,b));System.out.println("三个数的排序结果:"+s.sort(a,b,c));System.out.println("数组的排序结果:"+s.sort(arr));}}实验记录内容要求:写出上述程序的运行结果,并总结方法重载的合法条件。构造函数的重载构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。因此,构造方法不能直接调用,只能由new操作符调用。构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。实验记录内容:找出实验四中的父子类中的构造方法重载语句。方法的覆盖通过继承子类可以继承父类中所有可以被子类访问的成员方法,但如果子类的方法与父类方法同名,则不能继承,此时称子类的方法覆盖了父类的方法,简称为方法覆盖(override)。方法覆盖为子类提供了修改父类成员方法的能力。例如,子类可以修改层层继承下来的Object根类的toString方法,让它输出一些更有用的信息。下面的程序显示了在子类Circle中添加toString方法,用来返回圆半径和圆面积信息。下列有一个Circle类,要求编写两个方法覆盖Object类的equals方法(如果两个圆半径相等就认为两个圆相等)和toString方法(输出结果:圆半径:x厘米,圆面积y平方厘米,其中x,y是相应的值)classCircle{ privateintradius; publicCircle(intr){ this.setRadius(r); } publicvoidsetRadius(intr){ radius=r; } publicintgetRadius(){ returnradius; } publicdoublearea(){ return3.14159*radius*radius; } /*此处定义toString()方法定义*/ publicbooleanequals(Objecto){ Circlec=(Circle)o; returnradius==c.radius; } /*此处定义equals()方法定义*/ publicStringtoString(){ return"圆半径:"+radius+"圆面积为:"+3.14*radius*radius; }}publicclassTest{ publicstaticvoidmain(Stringargs[]){ Circlec1=newCircle(10); Circlec2=newCircle(10); System.out.println("\n"+c1.equals(c2)+c1.toString()); }4.4抽象类的编程应用。编写一个能产生三个柱体对象,分别是底部形状分别是Circle、Triangle(三角形),Rectangle(长方形)的情况,并计算相应体积。思路:该程序有两种实现方式。1)定义三个柱体类,分别是CirclePillar类、TrianglePillar类、RectanglePillar类,分别生成三个类的实例,但该方法的缺陷是什么?2)设计一个Shape抽象类,该类有一个抽象方法area(),设计一个Pillar(柱体)类,该类有两个成员变量:Shape和height,并创建3个实例:底部形状分别为Circle、Triangle(三角形),Rectangle(长方形)的柱体类,并计算相应体积。实验记录要求:写出相应代码。五、实验结果分析及实验报告要求分析程序运行结果
实验六接口与实现接口的类一、实验目的1.理解接口的概念和作用2.掌握接口的定义3.掌握如何实现接口4.掌握API基础5.掌握String类型和其他基本数据类型之间的相互转换二、实验设备和仪器电脑三、实验内容及要求1.产生三个柱体对象,分别是底部形状分别是Circle、Triangle(三角形),Rectangle(长方形)的情况,并计算相应体积。(提示定义一个Pillar类,成员变量底面积用Shape接口实现)2.编程判断用户输入的电子邮箱、电话号码(包括家庭电话和手机号码)是否合法,并将该程序打包至tools包下。3.写出String和基本数据类型(int、boolean、double)相互类型转换的语句。四、实验原理及步骤1.接口概念和定义概念:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。定义[public]interface接口[extends父接口列表]{[public][static][final]数据类型成员变量=常量值;[public][abstract]返回值类型成员方法[(参数列表)];}2.实现接口的类定义:[修饰符]class类<泛型>[extends父类][implements接口列表]实现接口的非抽象类必须实现所有接口中的所有抽象方法,否则声明为抽象类。3.正则表达式可以表示字符串的组成规则,由字符和量词构成。预定义字符类(转义字符序列):\d——代表任何数字字符,即[0-9]\D——代表任何非数字字符\w——代表任何单字字符(字母a~z、A~Z、下划线、0~9),即[a-zA-Z_0-9]\W——代表任何非单字字符\s——代表任何空白字符\S——代表任何非空白字符没有预定义字符类的字符,可在方括号[]指明,如[246]表示2或者4或者6三个字符²量词——表示匹配字符的个数:*——代表匹配字符个数为0个或多个+——代表匹配字符个数为1个或多个?——代表匹配字符个数为0个或1个{n}——代表匹配字符个数正好为n个{n,}——代表匹配字符个数至少为n个{n,m}——代表匹配字符个数至少为n个,最多为m个4.package打包语句格式:packagemypackage;必须放在程序的第一行,其作用是将当前程序的class文件打包至mypackage包(文件夹)中。5.String和其他基本类型转换1)将字符串转换成基本类型数据通过各个基本类型的类方法parseXXX来实现的2)将基本类型数据转换成字符串通过String的类方法valueOf来实现,该方法有多个重载,一般形式为:s.valueOf(parament)五、实验结果分析及实验报告要求填写实验内容的结果,要详细
实验七异常的抛出、捕获并处理一、实验目的了解异常类的作用掌握对异常的捕获和处理方式二、实验设备和仪器电脑三、实验内容及要求将每个知识点都进行上机实践,具体内容见实验原理与步骤。四、实验原理及步骤使用try…catch语句处理异常异常类型匹配的处理方式程序功能:在程序中主动产生一个ArithmeticException类型被0除的异常,并用catch语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage给出异常的具体类型并显示出来。程序源代码如下。publicclassEXP5_1{publicstaticvoidmain(String[]arg3){System.out.println("这是一个异常处理的例子\n");try{inti=10;i/=0;}catch(ArithmeticExceptione){e.printStrackTrace();}finally{System.out.println("finally语句被执行");}}}实验记录要求:写出上述程序的输出结果。包含多个catch子句的异常处理方式程序功能::在try子句中设计两个可能出现的异常,当a为0时会发生异常。另外一个是肯定的异常,因为数组c的长度为1,定义c[42]是为法的。通过两个catch子句分别来捕获异常。程序源代码如下。publicclassEXP5_3{publicstaticvoidmain(String[]args){try{inta=args.length;System.out.println("\na="+a);intb=42/a;intc[]={1};c[42]=99;}catch(ArithmeticExceptione){System.out.println("发生了被0除:"+e);}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("数组下标越界:"+e);}}}实验记录要求:上述源代码运行结果,总结多个catch语句捕获异常方式。使用throw语句抛出异常在上面的实验中,可以发现,异常对象是Java运行时由系统抛出的。抛出异常也可以通过使用throw语句实现。throw是Java语言的关键字,用来告知编译器此处要发生一个异常。throw后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。程序源代码如下。publicclassEXP5_4{staticvoidthrowProcess(){try{thrownewNullPointerException("空指针异常");}catch(NullPointerExceptione){System.out.println("\n在throwProcess方法中捕获"+e.getMessage());throwe;}}publicstaticvoidmain(Stringargs[]){throwProcess();}}实验报告要求:请写出该程序运行结果。使用throws语句throws子句一般用来表明在使用该方法时可能抛出异常但不捕获的异常。异常由系统来处理。throws子句也可以指出抛出异常是RuntimeException或自定义异常类,即异常的类型,以便准备调用其它方法捕获它,这种情况一般需要两个方法来分别处理抛出异常和处理异常。程序功能:在这个程序中的mathod方法中使用throws子句抛出异常,在main方法中捕获处理异常。程序源代码如下,请在横线内填入相应的代码。importjava.io.*;publicclassEXP5_5{staticvoidmathod()IllegalAccessException{System.out.println("\n在mathod中抛出一个异常");newIllegalAccessException();}publicstaticvoidmain(Stringargs[]){try{mathod();}catch(IllegalAccessExceptione){System.out.println("在main中捕获异常:"+e);}}}使用finally子句当一个异常被抛出时,程序的执行流程就不再是连续的了,会跳过某些语句,甚至会由于没有与之匹配的catch子句而过早地返回,结束程序的运行。为了确保一段代码不管发生什么异常都能被执行,可以使用finally子句。每个try语句至少都要有一个与之相配的catch或finally子句。从一个方法中返回到调用它的另外一个方法,可以通过return语句或通过一个没有被捕获的异常,但finally子句总是在返回前被执行。程序功能:在类EXP5_6的mathodA方法中使用try子句捕获异常,使用finally子句处理异常。程序源代码如下。classEXP5_6{staticvoidmathodA(){try{System.out.println("\nmathodA抛出一个异常");thrownewRuntimeException();}finally{System.out.println("执行mathodA的finally");}}staticvoidmathodB(){try{System.out.println("mathodB正常返回");return;}finally{System.out.println("执行mathodB的finally");}}publicstaticvoidmain(Stringargs[]){try{mathodA();}catch(Exceptione){mathodB();}}}创建自定义的异常类程序功能:通过继承Exception异常类创建一个自定义异常类MyException,然后再创建一个主类EXP5_7使用自定义异常类MyException。程序源代码如下。classMyExceptionextendsException{privateintx;MyException(inta){x=a;}publicStringtoString(){return"自定义异常类MyException";}}publicclassEXP5_7{staticvoidmathod(inta)throwsMyException{System.out.println("\t此处引用mathod("+a+")");if(a>10)thrownewMyException(a);//主动抛出MyExceptionSystem.out.println("正常返回");}publicstaticvoidmain(Stringargs[]){try{System.out.println("\n进入监控区,执行可能发生异常的程序段");mathod(8);mathod(20);mathod(6);}catch(){System.out.println("\t程序发生异常并在此处进行处理");System.out.println("\t发生的异常为:"+e.toString());}System.out.println("这里可执行其它代码");}}五、实验报告要求:请按实验内容要求写出实验报告。
实验八图形用户界面设计一、实验目的掌握Java图形组件和布局管理器的使用掌握使用Java事件处理机制的使用掌握图形界面的各种控件的使用如:标签、文本框、按钮、复选框、列表框、窗框等二、实验设备和仪器电脑三、实验内容及要求设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。1.运用一种或多种布局管理器,绘制出一个简单的计算器;2.为按钮注册事件监听器,使其点击按钮,并在显示区域同步显示当前输入或运算结果;3.编译运行程序,检查计算器的正确性;四、实验原理及步骤原理:通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。javax.swing包中的组件类可以帮助我们完整界面的设计。javax.swing包的JComponent类是java.awt包中的Container类的一个直接子类、Component类的间接子类。javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。在学习GUI编程时,必须很好地理解并掌握两个概念:容器类和组件类,必须很好地掌握java的事件处理机制。步骤:1.在纸上设计好计算器的布局,考虑好使用哪些布局管理类能实现你设计的布局。2.设计界面:定义一个Frame类的子类MyFrame,并将所有按钮和文本框组件定义为其成员,通过布局类设计每个组件在MyFrame中的位置。3.计算器上每个组件所产生的事件,对应的事件处理接口有哪些方法,哪个方法是处理当前事件的方法,等等。为每个按钮增加监听器,可用类MyFrame的当前对象this作为监听器。4.MyFrame实现事件接口ActionListener,即重写actionPerformed方法.主要的算法就在actionPerformed方法中.5.设计好算法。当单击数字按钮时会在文本框中显示相应的数字,表示此数字即将参与运算。当单击第一个运算符时,要做的工作是将文本框中数字作为一个运算对象保存到变量one中,并将此运算符保存到变量fu中,等待另一个运算对象的输入。当单击第二(或第三…)运算符时,要做的工作是将当前文本框中的数字和one的值按fu中的运算符进行运算,并将运算结果存到one中,依次类推直到遇到“=”结束。五、实验结果分析及实验报告要求1.采用布局管理器进行界面的布局;2.学会对不同的事件用相应的事件处理器;3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。
实验九线程设计一、实验目的1.掌握多线程的概念及线程实现的两种方法。2.掌握Java线程的状态及状态的改变。3.掌握Java程序音频、图像的处理。二、实验设备和仪器电脑三、实验内容与要求编程实现一副牌发牌程序,发送由1~52组成的一个随机数序列,发牌程序可参照教材217页。四、实验原理及步骤Java中提供了2种创建线程的方法:(1)继承Thread类(2)实现Runnable接口这两者都在java.lang包下。方法一继承Thread类publicThread();publicThread(Runnabletarget);publicThread(Runnabletarget,Stringname);publicThread(Stringname);这种方法创建线程的代码一般如下:publicclassThread1extendsThread//定义Thread类的子类Thread1,成为线程类。{//Thread1构造方法 publicvoidrun()//覆盖Thread类的run()方法{//定义线程的操作}}方法二:实现Runnable接口例如:publicclassRunnable1implementsRunnable{intk=0;publicRunnable1(intk){this.k=k;}publicvoidrun(){inti=k;System.out.println();while(i<50){System.out.print(i+"");i+=2;}}publicstaticvoidmain(Stringargs[]){Runnable1r1=newRunnable1(1);//创建线程体的目标对象Runnable1r2=newRunnable1(2);Threadt1=newThread(r1);//以目标对象创建线程Threadt2=newThread(r2);t1.start();t2.start();}}五、实验结果分析及实验报告要求实验报告仅仅只需写出和教材217页不同的代码即可。
实验十输入/输出流与文件操作一、实验目的掌握基于字节流进行输入/输出的方法、基于字符流进行输入/输出的方法、字节流与字符流之间的转换方法、对于字节文件和字符文件的读写方法,以及对输入/输出过程中可能发生的异常的处理方法。二、实验设备和仪器电脑 三、实验内容及要求1、用字节输入输出流和字符输入输出流将键盘输入内容保存成文件a.txt,并实现文件复制到b.txt。2、有纯文件“Early-Precaution.txt”,将这篇短文内所有大写字母改成小写,并将更改后的短文写到纯文本文件”joke.txt”里。TherewasanAmericancouplewhohadnochildren,sotheywantedtoadoptachild.Finally,anorphanagecontactedthem,saying,"Wehaveababyforadoption.It'saRussianorphan."Thecouplewasdelightedandwenttobringthebabyhome.Onthewayhome,theystoppedbyauniversitytoenrollinaRussiancourse."WhydoyouwanttolearnRussian?TheEnglishthatwespeakisaverygoodlanguage,"theuniversitysecretaryasked."Well,wejustadoptedaRussianbaby.WhenhebeginstospeakRussianinafewyears,weareafraidthatwemightnotbeabletounderstandhim,"thecouplereplied.四、实验原理及步骤当程序需要读取磁盘上的数据或将程序中的数据存储到磁盘时,就可以使用输入/输出流,简称I/O流。I/O流提供一条通道程序,可以使用这条通道读取”源”中的数据,或把数据送到”目的地”。FileOutputStream类创建的对象称为文件字节输出流,可按字节将数据写入到文件中。FileInputStream类创建的对象称为文件字节输入流,可按字节读取文件中的数据。FileReader类创建的对象称为文件字符输入流,可按字符读取文件中的数据。Filewriter类创建的对象称为文件字符输出流,可按字符将数据写入到文件中。BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称为BufferedReader流的底层流。底层流负责将数据读入到缓冲区,BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区读取数据。BufferedWriter类创建的对象称为缓冲输出流,可以将BufferedWriter和FileWriter连接在一起,FileWriter流称为BufferedReader流的底层流。BufferedWriter将数据写入缓冲区,底层流负责将数据写到最终的目的地。1.BufferedWriter对象调用newLine()可以向文件写入回行。2.BufferedReader对象调用readLine()方法可以读取文件的一行。五、实验结果分析及实验报告要求写出实验代码即可。
实验十一网络通信一、实验目的1.掌握网络计算、服务器和客户机等基本概念。2.掌握套接字与机器标识的概念以及InetAddress类的使用。3.掌握使用ServerSocket、Socket类实现套接字的编程。4.了解使用DatagramSocket、DatagramPacket实现UDP网络编程。二、实验设备和仪器电脑三、实验内容及要求1.编写一个程序能利用URLConnection所对应的url,如””的内容读取出来。2.编写图形用户界面的程序实现聊天功能,界面如图14.2和14.2所示:图13.12服务器端界面13.13客户端界面3.使用ServerSocket类与Socket类编写一个简单的客户/服务器程序,实现的功能是客户向服务器发送一个字符串,服务器程序将该字符串转换成大写字母输出。四、实验原理及步骤1.URLConnection类创建URLConnection对象之前必须先创建一个URL对象,然后通过调用URL类提供的openConnection()方法,就可以获得一个URLConnection类的对象。URLConnection类的构造方法如下:publicURLConnection(URL):用于创建一个指定URL的连接对象。但是,用URLConnection的构造方法来创建URLConnection类对象时,并未建立与指定URL的连接,还必须调用URLConnection类的connect()方法才能建立连接。openConnection()方法的定义如下:publicURLConnectionopenConnection();下面是使用URL类的openConnection()方法建立连接的几条语句:例如:URLurl=newURL(“”);URLConnectionconnection=url.openConnection();URLConnection类中的主要方法方法名功能说明voidconnect()建立URL连接ObjectgetContent()获取该URL的内容StringgetContentEncoding()获取响应数据的内容编码intgetContentLength()获取响应数据的内容长度StringgetContentType()获取响应数据的内容类型longgetDate()获取响应数据的创建时间longgetExpiration()获取响应数据的终止时间InputStreamgetInputStream()获取该连接的输入流longgetLastModified()获取响应数据的最后修改时间OutputStreamgetOutputStream()获取该连接的输出流2.Socket通信TCP通信中与Socket通信相关的两个类,一个是代表服务器端套接字的ServerSocket类,另一个是代表客户端套接字的Socket类。2.1Socket类客户端可以通过构造一个Socket类对象来建立与服务器的连接。Socket类的主要方法方法名功能说明voidclose()关闭Socket连接InetAddressgetInetAddress()获取当前连接的远程主机的Internet地址InputStreamgetInputStream()获取Socket对应的输入流InetAddressgetLocalAddress()获取本地主机的Internet地址intgetLocalPort()获取本地连接的端口号OutputStreamgetOutputStream()获取该Socket的输出流intgetPort()获取远程主机端口号voidshutdownInput()关闭输入流voidshutdownOutput()关闭输出流2.2ServerSocket类ServerSocket类用在服务器端,用来监听所有来自指定端口的连接,并为每个新的连接创建一个Socket对象。之后客户端便可以与服务器端开始通信了。ServerSocket类的主要方法方法名功能说明Socketaccept()接收该连接并返回该连接的Socket对象voidclose()关闭此服务器的SocketInetAddressgetInetAddress()获取该服务器Socket所绑定的地址intg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年农业综合开发造林合同2篇
- 2024年度智慧城市公共服务体系建设合同6篇
- 2024年印刷行业合作伙伴合同范本版B版
- 2024年战略合作意向书:双方共同发展协议3篇
- 2024年小型住宅施工协议范本
- 门梯检修工练习试题及答案
- 2024版建筑工程用破碎机加工定制合同3篇
- 《XHTML基础教程》课件
- 《儿少保护专题演讲》课件
- 2024年专业个人运输服务委托协议版
- 治安、刑事案件报告制度
- 成都市人教版七年级上册历史-材料分析综合题-期末试卷及答案
- 电磁场与电磁波(第五版)完整全套教学课件
- 三年级心理健康教育 第一课《独一无二的我》教学设计
- 上海市复旦附中2025届高一上数学期末检测模拟试题含解析
- 浙江省强基联盟2024-2025学年高三上学期8月联考 数学试题(含解析)
- 五年级上册解方程练习100题及答案
- 登革热防控知识考试试题
- 肿瘤所治疗所致血小板减少症诊疗指南
- DB3305-T 125-2019家庭医生签约服务与评价规范
- 建筑制图基础-国家开放大学电大机考网考题目答案
评论
0/150
提交评论