第一部分 JAVA集成开发环境 Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。编程人员和最终用户可以利用这些工具来开发java程序或调用Java内容。通常我们以JDK(Sun所开发的一套Java开发工具)的版本来定义Java的版本。JDK1.0版于1996年初公开,JDK1.1版于1997年初公开,JDK1.2版于1998年底公开。基于市场行销的考量,Sun在JDK1.2版公开后旋即将Java改名为「Java2」,将JDK改名为「Java2SoftwareDevelopmentKit(以下简称J2SDK)」。J2SDK(原称JDK)1.3于2000年4月公开,此版本仍称做「Java2」。目前J2SDK1.4.2版已经发布并投入使用中,目前Java1.5测试版已发布。 Java2出现后,将分成Java2PlatformEnterpriseEdition(简称J2EE)、Java2PlatformStandardEdition(简称J2SE)、Java2PlatformMicroEdition(简称J2ME)。J2EE适用于服务器,目前已经成为企业运算、电子商务等领域中相当热门的技术;J2SE适用于一般的计算机;J2ME适用于消费性电子产品。除了这三者之外,JavaCard依然是独立的一套标准。 随着应用领域的不同,Java有许多API(ApplicationProgrammingInterface),这些API分成三大类: JavaCoreAPI:由Sun制定的基本API,任何Java平台都必须提供。 JavaStandardExtensionAPI(javax):由Sun制定的扩充API,Java平台可以选择性地提供或加装。 厂商或组织所提供的API:由各家公司或组织所提供。 其中CoreAPI和StandardExtensionAPI已经逐渐涵盖了大部份的信息应用领域,例如多媒体、数据库、Web、企业运算、语音、实时系统、网络、电话、影像处理、加解密、GUI、分布式运算......。如果你有某项需求尚未有标准的JavaAPI可遵循,你可以向Sun提出制定新API的请求。经过审核之后,你的要求可能会通过、驳回......等。如果通过,就会开始进入制定API的程序。JavaAPI的制定过程因为公开, J2EE、J2SE、J2ME及CoreAPI的关系见下图 图1.1 J2EE、J2SE、J2ME及CoreAPI的关系 且经过许多业界技术领先公司的共同参与,所以相当完善而优异。和Java标准相关的任何第一手资料,你都可以在http://www.javasoft.com取得。 1.1 DOS环境Java2SDK SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK)。开发人员和最终用户可以利用这个工具来开发java程序。 JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后的Java文件,这能带给DOS时代程序员美好的回忆。Java 初学者一般都采用这种开发工具。 从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。 1.1.1 建立Java开发环境 (1) 下载JavaJDK. 本书将使用目前最新的版本J2SE的Java2 J2SE 5.0(1.5.0)。可以通过IE或NetScape浏览器浏览网址:http://Java.sun.com/j2se,根据提示可以下载支持MicrosoftWindows操作系统的JAVA2SDK.exe到本地硬盘或从CD复制到本地硬盘. 安装JavaJDK. J2SE1.5.0安装界面 从硬盘中或从光盘(如JAVAII光盘)中运行jdk-1_5_0-windows-i586.exe,根据提示可以选择安装文件夹如D:\jdk1.5.0,然后根据提示进行安装,如上图。安装完成后得到如下的文件和目录结构。 (图1.3) jdk1.5.0的目录结构 图1.3是j2sdk1.5.0的目录结构。 配置JavaSDK. Windows98/ME/XP:简单的方法就是选择[开始][运行]sysedit,这会显示一个实用程序的界面。 图1.4 系统配置编辑器 在这里可以设置环境变量. 设置项目如下:修改autocexe.bat就是修改自动批处理文件。添加: set PATH=jdk安装目录\bin;%path% set CLASSPATH=.;jdk安装目录\lib 如 set PATH=D:\jdk1.5.0\bin;%path%; set CLASSPATH=.;D:\jdk1.5.0\jre\lib; set JAVA_HOME=D:\jdk1.5.0 //你安装J2SE的目录 Windows2000操作系统:打开系统设置,按Winkey+Break或右击“我的电脑”,选属性,选择高级->系统环境。同样设置以上的系统环境变量.设置完JDK路径后,任何地方皆可执行Java原始程序代码。 其他操作系统的安装和配置可以参考以上的系统环境变量进行配置。 1.1.2 JDK开发环境中常用工具介绍 下面将介绍一些主要Java工具的使用,在Java环境中的Java工具列表如下所示: *appletviewer 小应用程序浏览器 *java 解释器 *javac 编译器 *javah 头文件生成器 *javadocAPI 文档生成器 *javap 类文件反汇编器 *jdb Java语言调试器 这些文件包括在d:\jdk1.5.0\bin目录中,并可以在任何目录中运行,前提是你在设置运行程序的系统中设置了路径。 1. javac编译器 Javac编译器读取Java源代码,并将其编译成字节代码,调用Javac的命令行如下: d:\user>javac [options] filename.java 表1.1 部分选项 选项 功能 -classpathpath 此选项用于设定路径,在该路径上Javac寻找需被 调用的类。该路径是一个用分号分开的目录列表。 -ddirectory 此选项指定一个根目录。该目录用来创建反映软件 包继承关系的目录数。 -g 此选项在代码产生器中打开调试表,以后可凭此调 试产生字节代码。 -O 此选项告诉javac优化由内联的static、final以及 privite成员函数所产生的代码。 -verbose 此选项告知Java显示出有关被编译的源文件和任何 被调用类库的信息。 例如d:\user>javac –verbose JPrg.java 将生产字节文件JPrg.class。值得注意的是,和Java解释器不同,Javac编译器期望它正在编译的文件具有扩展名.java。 2. java解释器 Java解释器可用来直接解释执行Java字节代码,具体命令行格式如下: C:\>java options className arguments className必须包括所有软件包信息。不仅有类名本身,还有Java解释器所期望的类名(不是Java字节代码的文件名),所有在解释器环境下运行的类都必须包括解释器第一次调用时所需的main成员函数,用以传递命令所带的变量。options包括了Java解释器的所有选项,如:-classpathpath此选项重写CLASSPATH环境变量,告诉Java在哪里能找到类库。如果其中用冒号分开,则可能包含多个目录等。 3. appletviewer小应用程序浏览器 appletviewer提供了一个Java运行环境,在其中可测试小应用程Applet。appletviewer读取包含小应用程序的HTML文件并在一个窗口中运行它们。 其他工具详见参考资料。 1.2 小型集成视窗环境JCreator介绍 JCreator 是一个Java程序开发工具,也是一个Java集成开发环境(IDE)。无论你是要开发Java应用程序或者网页上的Applet元件都难不倒它。在功能上与Sun公司所公布的JDK等文字模式开发工具相较之下来得容易,还允许使用者自订义操作窗口界面及无限Undo/Redo等功能。 JCreator为用户提供了相当强大的功能,例如项目管理功能,项目模板功能,可个性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器,向导功能以及完全可自定义的用户界面。通过JCreator,我们不用激活主文档而直接编绎或运行我们的JAVA程序。 JCreator能自动找到包含主函数的文件或包含Applet的Html文件,然后它会运行适当的工具。在JCreator中,我们可以通过一个批处理同时编绎多个项目。JCreator的设计接近Windows界面风格,用户对它的界面比较熟悉。其最大特点是与我们机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。它是一种初学者很容易上手的Java开发工具,缺点是只能进行简单的程序开发,不能进行企业J2EE的开发应用。 图1.5 集成的、可视化环境JCreator JCreator依赖JDK,它与JDK完美结合,是其它任何一款IDE所不能比拟的。他只有1.9M左右,由于依赖JDK. 须进行配置才能运行。 该软件在这里只做简单介绍。下面一节介绍的Eclipse是我们实验使用的软件平台,也是我们所推荐使用的。 1.3大型集成开发环境Eclipse Eclipse 是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。目前,Eclipse已经开始提供C语言开发的功能插件。更难能可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。 可以这样讲Eclipse是目前用过的最好的,最智能化的Java开发软件。它是IBM websphere的基础. Eclipse的最新版本是3.x .附带有各种语言包.中国的用户可以从www.eclipse.org 上面下载eclipse的SdK,和中文语言包,解压缩的同一个目录下,就可以了。例如把它们解压缩到d:\Eclipse3目录下。该软件是一个绿色软件,如果日后象删除,就直接删除这个目录就可以了。在d:\eclipse3目录下,运行eclipse.exe文件就可以启动。进去后就是主界面, 如图1.6。 图1.6 Eclipse界面 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。 下面举一个简单的例子,我们将创建并运行一个“Hello, world”应用程序。使用 Java 透视图,右键单击“Hello”项目,选择 New=>Class,如下图1.7 所示。在随后出现的对话框中,键入“Hello”作为类名称。在“Which method stubs would you like to create?”下面,选中“public static void main(String[] args)”复选框,然后按 Finish 图1.7 New Class定义 这样将在编辑器区域创建一个包含 Hello 类和空的 main() 方法的 .java 文件,如下图所示。然后向该方法添加如下代码(注意其中 i 的声明是有意省略了的): 图1.8 编辑HelloWorld.java 您会在键入时注意到 Eclipse 编辑器的一些特性,包括语法检查和代码自动完成。当您键入开括号或双引号时,Eclipse 会自动提供配对的符号,并将光标置于符号对之内。 在其他情况下,您可以通过按 Ctrl-Space 来调用代码自动完成功能。代码自动完成提供了上下文敏感的建议列表,您可通过键盘或鼠标来从列表中选择。这些建议可以是针对某个特定对象的方法列表,也可以是基于不同的关键字(比如 for 或 while)来展开的代码片断。 语法检查依赖增量编译。每当您保存代码,它就在后台接受编译和语法检查。默认情况下,语法错误将以红色下划线显示,一个带白 “X” 的红点将出现在左边沿。其他错误在编辑器的左边沿通过灯泡状的图标来指示;这些就是编辑器或许能为您修复的问题——即所谓的Quick Fix(快速修复)特性。 上面的代码例子在 for 语句后面有一个灯泡状图标,因为 i 的声明被省略了。双击该图标将调出建议的修复列表。在此例中,它将提供创建一个类字段 i、一个局部变量 i 或一个方法参数 i 的建议;单击其中的每一个建议都会显示将要生成的代码。图 4 显示了该建议列表和建议创建一个局部变量之后生成的代码。 图1.8编辑HelloWorld.java 双击该建议就会把建议代码插入到代码中的恰当位置。 一旦代码无错误地编译完成,您就能够从 Eclipse 菜单上选择 Run 来执行该程序(注意这里不存在单独的编译步骤,因为编译是在您保存代码时进行的。如果代码没有语法错误,它就可以运行了)。这时会出现一个具有适当默认设置的 Launch Configurations 对话框;请按右上角的 Run 按钮。一个新的选项卡式窗格将出现在下面的窗格(控制台)中,其中显示了程序的输出,如图1.10 所示。 图1.10 运行HelloWorld 也可以在 Java 调试器中运行程序。首先双击编辑器视图左端的灰色边沿,从而在调用 System.out.println() 之后的 main() System.out.println() 中设置一个断点。一个蓝色的点将会出现在那里。然后从 Run 菜单上选择 Debug。正如上面描述的,这时会出现一个 Launch Configurations 对话框。请选择 Run。透视图将自动切换到 Debug 透视图,其中具有许多有趣的新视图,如图1.11 所示: 图1.11 运行Debug 首先,请注意该透视图左上角的 Debug 视图。这个视图显示调用堆栈,并且标题栏中有一个工具栏,它允许您控制程序的执行,包括继续、挂起或终止程序、跟踪下一个语句、单步执行下一个语句,或者从方法返回。 右上角的窗格包含许多选项卡式的视图,包括 Variables、Breakpoints、Expressions 和 Display。这里我单击了 Variables 视图,以便我们能够看到 i 的当前值。 可以通过上下文敏感的帮助,获得关于这些视图的更多信息:单击视图的标题,然后按 F1 1.4 Java程序举例 Java程序分成两类,即Application(应用程序)和Applet(小程序)。应用程序在计算机中单独运行,而小程序只能嵌在HTML网页中运行。这需要一些网页知识。 1.4.1简单的Java应用程序 下面我们先介绍简单的Java程序,并对其进行分析。 例1-1 文件HelloWorldApp.java如下: // HelloWorldApp.java public class HelloWorldApp{ //anapplication public static void main(String args[]){ System.out.println(″Hello World!″); } } 本程序的作用是输出下面一行信息: Hello World! 程序中,首先用保留字class来声明一个新的类,其类名为HelloWorldApp,它是一个公共类(public)。整个类定义由大括号{ }括起来。在该类中定义了一个main()方法,其中public表示访问权限,指明所有的类都可以使用这一方法;static指明该方法是一个类方法,它可以通过类名直接调用;void则指明main()方法不返回任何值。对于一个应用程序来说,main()方法是必需的,而且必须按照如上的格式来定义。Java解释器在没有生成任何实例的情况下,以main()作为入口来执行程序。Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只有有一个公共类,main()方法也只能有一个,作为程序的入口。main()方法定义中的,括号()中的String args[]是传递给main()方法的参数,参数名为args,它是类String的一个实例,参数可以为0个或多个,每个参数用“类名参数名”来指定,多个参数间用逗号分隔。在main()方法的实现(大括号中),只有一条语句: System.out.println(″Hello World!″); 它用来实现字符串的输出,这条语句实现与C语言中的printf语句和C++中cout<<语句相同的功能。另外,//后的内容为注释。 现在我们可以运行该程序。首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。然后对它进行编译: d:\user\chap01>javac HelloWorldApp.java 编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件: d:\user\chap01>java HelloWorldApp 结果在屏幕上显示HelloWorld! Java程序中有三种插入注释的允许风格: // comment on one line /* comment on one or more line */ /** documenting comment */ 紧放在声明(变量、方法或类的声明)之前的文档注释表明,注释应该被放在自动生成的文档中(由javadoc命令生成的HTML文件)以当作对声明项的描述。 1.4.2简单的Applet小程序 例1-2 // HelloWorldApplet.java import java.awt.*; import java.applet.*; public class HelloWorldApplet extends Applet{ //anapplet public void paint(Graphics g){ g.drawString(″Hello World in Applet!″,20,20); } } 这是一个简单的Applet(小应用程序)。程序中,首先用import语句输入java.awt和java.applet下所有的包,使得该程序可能使用这些包中所定义的类,它类似于C中的#include语句。然后声明一个公共类HelloWorldApplet,用extends指明它是Applet的子类。在类中,我们重写父类Applet的paint()方法,其中参数g为Graphics类,它表明当前作画的上下文。在paint()方法中,调用g的方法drawString(),在坐标(20,20)处输出字符串“HelloWorld!”,其中坐标是用象素点来表示的。 这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译: d:\user\chap01>javac HelloWorldApplet.java 得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。它的<HTML>文件如下: <HTML> <HEAD> <TITLE>An Applet</TITLE> </HEAD> <BODY> <applet code=”HelloWorldApplet.class”width=200 height=40> </applet> </BODY> </HTML> 其中用<applet>标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,我们把这个HTML文件存入Example.html,然后运行: d:\user\chap01>appletviewer Example.html 这时屏幕上弹出一个窗口,其中显示Hello World in Applet!。 或在IE浏览器中运行(FileOpenBrowseExample.htmlOk)。 从上述例子中可以看出,Java程序是由类构成的,对于一个应用程序来说,必须有一个类中定义main()方法,而对applet来说,它必须作为Applet的一个子类。在类的定义中,应包含类变量的声明和类中方法的实现。Java在基本数据类型、运算符、表达式、控制语句等方面与C、C++基本上是相同的,但它同时也增加了一些新的内容,在以后的各章中,我们会详细介绍。本节中,只是使大家对Java程序有一个初步的了解。 第二部分 Java程序设计实验项目 实验一 熟悉Java程序开发环境 一、 实验目的 1. 了解和使用J2sdk1.5.0(JDK)集成环境。 2. 熟悉J2sdk集成环境的基本命令、功能和基本用法。并学会配置path 等环境变量 3. 学习并熟练掌握使用J2SDK环境进Java程序开发的全过程(包括:源程序的编辑、编译、调试、运行和结果查看)。 4. 了解和掌握JCREATOR和Eclipse集成环境的安装,简单应用。 5. 了解Java Application和Applet程序的基本结构。 6. 了解Java程序文件名和类名的说明方法。 二、 实验内容与要求 安装Jdk1.5.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。 设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。进入命令行(MS-DOS)方式,进行如下设置: SET PATH=D:\JDK1.5.0\BIN;%PATH% SET CLASSPATH=.; %CLASSPATH% 2. 安装 Jdk 1.5.0 Doc, 并查看Jdk 1.5.0 Doc 文档中,和课堂教学有关系的部分。在整个实验过程中都可以参考。 3. 建立自己的工作目录如d:\user。以后的Java程序和过程文件均放置在此目录下。 4. 输入一个Application源程序,学习编辑、编译、运行程序的方法。 //例1-1 文件HelloWorldApp.java如下: // HelloWorldApp.java public class HelloWorldApp{ public static void main(String args[]){ System.out.println(″Hello World!″); } } 本程序的作用是输出下面一行信息: Hello World! 现在我们可以运行该程序。首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。然后对它进行编译: d:\user>javac HelloWorldApp.java 编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件: d:\user>java HelloWorldApp 结果在屏幕上显示HelloWorld! 4、输入一个applet源程序,学习编辑、编译、运行程序的方法。 简单的Applet小程序 例1-2 // HelloWorldApplet.java import java.awt.*; import java.applet.*; public class HelloWorldApplet extends Applet{ //anapplet public void paint(Graphics g){ g.drawString(″Hello World in Applet!″,20,20); } } 这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译: d:\user>javac HelloWorldApplet.java 得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。它的<HTML>文件如下: <HTML> <HEAD> <TITLE>An Applet</TITLE> </HEAD> <BODY> <applet code=”HelloWorldApplet.class”width=200 height=40> </applet> </BODY> </HTML> 其中用<applet>标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,把这个HTML文件存入Example.html,然后运行: d:\user>appletviewer Example.html 这时屏幕上弹出一个窗口,其中显示Hello World in Applet!。 5.安装JCREATOR软件,并配置JCREATOR,在JCREATOR中用建立工程的方式重新运行上面的4、5小题。 6.安装Eclipse软件,并配置Eclipse,在Eclipse中用建立工程的方式重新运行上面的4、5小题。 三、思考题 1.什么是Java虚拟机?它的作用是什么? 2.Java Application程序与Java Applet程序的不同之处有那些?请各位同学收集错误代码与提示信息,以及产生错误的原因。 3.列举出5种以上Java开发平台,分析他们的优缺点或特点。 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验二 简单数据类型和流程控制 一、 实验目的 1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。 2.掌握Java语言中具各种运算符表达式的基本知识。 3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。 4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。 5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。熟练掌握特殊流程控制语句如break,continue,标号语句。 6.熟练掌握一维数组和二维数组的使用 7.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题 二、 实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 public class Ch21 { public static void main(String args[]) { char x,y,z; x='K'; y='\\'; z='\117'; System.out.print(x); System.out.print(y); System.out.print(z); } } 2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 public class Ch22 { public static void main(String args[]) { boolean x,y,z; int a=12,b=24; x=(a>b); y=(a!=b); z=(a+b==36); System.out.println("x="+x); System.out.println("y="+y); System.out.println("z="+z); } } 3、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 public class Ch23{ public static void main(String args[]) { int x,y,z=0; for (x=1;x<=10;x++) for (y=1;y<10;y++) { if (x==5) continue; if (y>5) break; z++; } System.out.println("z="+z); } } 4. 设int year,month,day分别表示一个日期中的年月日,试编程求 a) 对于任意三个整数,判断其是否为一个合法的日期值。 b) 给定一个日期值,计算若干天后的日期值 c) 如果有两个日期值,计算他们相距的天数。 5. 找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点。) 6、编写一个程序,要求将一个浮点数强制转化成整型后再输出。 7.请计算出3至1000范围内最大的10个素数,放入数组中,并计算出其累加和。 8. 水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:371=33+73+13,371就是一个水仙花数。找出所有水仙花数. 三、 思考题 1.定义变量的作用是什么? 2.Java运算符的优先级与结合性是怎样的? 3.long l=121233;float f=100.2323; 这两行代码在编译时有什么错误。 4.&和&&有什么区别? 5.break,continue在流程控制中的作用。 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验三 类、对象基础知识 一、实验目的 1、熟练掌握类、对象的的概念以及对事物的抽象。 2、熟练掌握成员、方法的概念以及构造方法的概念。 3、熟练掌握封装性,多态性的概念 4、理解面向对象的程序设计方法。 二、实验内容与要求 1.运行下面的程序,理解面向对象的程序设计方法的基本概念。 class value { public int x,y; public value(int a,int b) { x=a; y=b; } } public class Ch31 { public static void main(String args[]) { int total; value num=new value(24,65); total=num.x+num.y; System.out.println("add="+total); } } 2、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”,。定义主类,创建帐户类的对象,并完成相应操作。 提示:关键代码如下: public int getleftmoney(){ return leftmoney; } public void savemoney(double money){ leftmoney+=money; } public void getmoney(double money){ if(money<=leftmoney) leftmoney-=money; else System.out.println("只能取:"+leftmoney); } … bankaccount ba=new bankaccount(888123,1000); ba.savemoney(21000); System.out.println("存入21000元后余额为:"+ba.getleftmoney()); ba.getmoney(11500); System.out.println("11500元后余额为:"+ba.getleftmoney()); 3.先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。在main()中创建一个对象,求给定三点的三角形的周长、面积。 3.将上题的方法setTri改用构造方法实现初始化。 4、编写JAVA程序求园柱体的表面积和体积,已知底面圆心p为(0,0),半径r为10,圆柱体高5。 三、思考题 1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用? 2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用? 3.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么? 4.同名的不同方法共存的情况称为什么?如何区分这些同名方法? 5.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea ();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验四 抽象类、接口与包 一、实验目的 1、熟练掌握抽象类abstract的概念。 2、熟练掌握接口interface的概念。 3、熟练包package的概念以及编译运行的方法。 4、熟练掌握内部类inner class的概念。 5、熟练掌握递归的概念。 6、理解面向对象的程序设计方法。 二、实验内容与要求 1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。 2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。 提示:从键盘上输入双精度数的一种方法(程序片段) …… public static void main(String args[]) throws IOException { BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); String x; x=keyin.readLine(); double a=Double.parseDouble(x); …… 3.练习java.lang.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。获取类的描述信息。 4.从命令行输入一个正整数,用递归的方法求出每位数字上的累加和 三、思考题 1.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea ();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。 2. 内部类inner class和外部类的区别? 3.抽象类和接口的区别? 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验五 字符串处理及基础类库 一、实验目的 1、 理解并掌握String类、StringBuffer类; 2、 理解并掌握StringTokenizer类 3、 掌握字符串与其他数据类型的转换 4、 掌握Math类的使用。 5、 了解和掌握集合框架类。 6、 掌握Java Application命令行参数的使用 二、实验内容与要求 1.利用下面的关键代码编写一个完整的程序,理解Math类的使用。 System.out.println (Math.abs (-5.8)); //5.8 System.out.println (Math.ceil (3.2)); //4 System.out.println (Math.floor (3.8)) //3 System.out.println (Math.round (3.8)); //4 System.out.println (Math.round (3.2)); //3 System.out.println (Math.min (3,2)); //2 System.out.println (Math.max (Math.PI,4)); //4 System.out.println (Math.log (7.0)); //1.94591 System.out.println (Math.pow (7,2)); //72 ---- 49 System.out.println (Math.exp (0.4)); //1.49183 System.out.println (Math.IEEEremainder(10.0,3.0)); //返回1 angle = 0.785398; //以弧度为单位的角,π/4 System.out.println (Math.tan (angle)); //返回该角的正切 System.out.println (Math.asin(0.707107)); //返回反余弦 System.out.println ("e is:"+ Math.e); // e is:2.71828 System.out.println ("πis:"+Math.PI); //πis:3.14159 System.out.println(Math.random()); //产生0和1(不含1)之间的伪随机数 2.利用下面的关键代码编写一个完整的程序,理解String类的使用。 String s=new String("This is an demo of the String method."); //String s="This is an demo of the String method."; System.out.println("Length: "+s.length()); System.out.println("SubString: "+s.substring(11,15)); 3.利用下面的关键代码编写一个完整的程序,理解StringBuffer类的使用。 StringBuffer sb=new StringBuffer("Hello World!"); sb.append(" Hello Java!"); sb.insert(12," And"); System.out.println(sb); System.out.println(sb.charAt(0)); sb.setCharAt(0,''h''); System.out.println(sb.charAt(0)); System.out.println(sb); 4.使用Java Aplication的命令行参数读入两个数据,计算它们的和,然后将和输出。如果参数的数目不足,显示相应提示信息并退出程序的执行。 三、思考题 1.算术运算应使用什么类? 2.Java中如何表示字符串? 3.Java Application如何定义和使用命令行参数? 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验六 异常处理 一、实验目的 1、理解什么是例外 2、掌握java的例外处理机制和方法 二、实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 mport java.io.*; public class Ch61 { public static void main(String args[])throws IOException { int[] ko=new int[15]; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:"); x=keyin.readLine(); n=Integer.parseInt(x); try { a=110/n; ko[15]=100; System.out.println("此描述无法执行!"); } catch(ArithmeticException e){ System.out.println("除数为0的错误"); } catch(ArrayIndexOutOfBoundsException f) { System.out.println("数组索引值大于数组长度的错误!"); } System.out.println("执行完catch的描述!!!"); } } 2.运行下面的程序,自己给出程序的运行结果。 import java.io.*; public class Ch62{ public Ch62(){ try{ int a[] = new int[2]; a[4] = 3; System.out.println("After handling exception return here?"); }catch(IndexOutOfBoundsException e){ System.err.println("exception msg:" + e.getMessage()); System.err.println("exception string:" + e.toString()); e.printStackTrace(); }finally{ System.out.println("-------------------"); System.out.println("finally"); } System.out.println("No exception?"); } public static void main(String args[]){ new Ch62 (); } } 3.使用Java Aplication的命令行参数读入两个数据,计算它们的和,然后将和输出。编程自定义例外OnlyOneException与NoOprandException。如果参数的数目不足,显示相应提示信息并退出程序的执行。 三、思考题 1. 下面程序在编译时会出现什么错误? import java.io.*; class ExceptionDemo1{ public static void main(String args[]){ FileInputStream fis = new FileInputStream(“text.dat”); int b; while(b=fis.read())!=-1 { System.out.print(b); } fis.close(); } } 2.异常分为哪两类? 3.如果申明int a[]=new int[-10];应属于那类异常 4.比较throw和throws两者的用法上的区别。 5.本实验的实验内容2中,finally程序块的作用是什么? 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验七 流式输入输出处理 一、实验目的 1、理解流的概念,流的划分 2、 掌握文件描述,顺序处理,随机访问处理的方法; 3、 能够熟练的使用过滤流;掌握字符流处理的方法; 4、 理解对象串行化的概念和方法。 二、实验内容与要求 1、 仔细读下面的JAVA语言源程序,自己给出程序的运行结果,理解File类的使用。 import java.io.*; import java.awt.*; import java.awt.event.*; public class Ch71 extends Frame { int n; String dirname="/jdk1.4"; File file=new File(dirname); String[] flist=new String[100]; Choice listFile=new Choice(); TextField tf=new TextField(); public Ch71(){ setLayout(new BorderLayout(10,10)); flist=file.list(); for (n=0;n<flist.length;n++) { listFile.addItem(flist[n]); } add("North",listFile); add("South",tf); setSize(250,200); setVisible(true); listFile.addItemListener(new koListener()); addWindowListener(new koWindowListener()); } public static void main(String args[]) { new Ch71(); } class koListener implements ItemListener { public void itemStateChanged(ItemEvent e) { String ko=(String)e.getItem(); for (n=0;n<flist.length;n++) if (ko==flist[n]) { File f=new File(file+System.getProperty("file.separator")+ko); if (f.isFile()==true) tf.setText(ko+"是个文件!"); if (f.isDirectory()==true) tf.setText(ko+"是个目录!"); } } } class koWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } } } 2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*; public class testRandom2{ public static void main(String args[]){ try{ RandomAccessFile rf=new RandomAccessFile("rtest.dat", "rw"); for(int i = 0; i < 10; i++){ rf.writeInt(i); rf.writeDouble(i*1.414); } rf.close(); rf = new RandomAccessFile("rtest.dat", "rw"); rf.seek(5*(4+8)); rf.writeInt(47); rf.writeDouble(47.00021); rf.close(); rf = new RandomAccessFile("rtest.dat", "r"); for(int i = 0; i < 10; i++){ ; System.out.println("Value " + rf.readInt() + ": " + rf.readDouble()); } rf.close(); }catch(IOException e){ System.out.println(e.toString()); } } } 3、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"、”显示帐号”以及存储功能。定义主类,创建帐户类的对象,并完成相应操作,要求能存储储户历史信息。 4、编写程序,能接收键盘输入的字符串,并将字符串的内容写入文件。 三、思考题 1、InputStream和OutputStream的基本方法是什么? 2、 DataOutputStream类的常用方法。 3、 Ascii编码和Unicode编码的区别? 5.字符流和字节流的区别是什么? 6.对文件进行读写操作的过程是什么? 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验八 线程 一、实验目的 1.线程的概念、线程的生命周期。 2.多线程的编程:继承Thread类与使用Runnable接口。 3.使用多线程机制实现动画。 4. 处理简单的多线程互斥和同步; 二、实验内容与要求 1、 仔细读下面的JAVA语言源程序,自己给出程序的运行结果 public class Ch81 extends Thread { int n; Ch81() { Thread td=new Thread(this); td.start(); } public void run() { for (n=0;n<6;n++) { try { System.out.print(n); Thread.sleep(500); } catch(InterruptedException e) { System.out.println("Exception"); } } } public static void main(String args[]) { new Ch81(); } } 2.运行下面的程序,理解用实现Runnable接口的方法实现多线程。 //这是一个时钟Applet,它显示当前时间并逐秒进行更新。 import java.awt.*; import java.applet.*; import java.util.*; public class Clock extends Applet implements Runnable{ Thread clockThread; public void start(){ if(clockThread==null){ clockThread=new Thread(this,"Clock"); clockThread.start(); } } public void run(){ while(clockThread !=null){ repaint(); try{ clockThread.sleep(1000); }catch(InterruptedException e){} } } public void paint(Graphics g){ Date now=new Date(); g.drawString(now.getHours()+";"+now.getMinutes()+";"+now.getSeconds(),5,10); } public void stop(){ clockThread.stop(); clockThread=null; } } 3.利用多线程编程实现一个正在旋转的地球 4.将插入、冒泡排序算法设计成算法,启动两个以上不同的线程同时运行,计算不同排序的运行时间。 三、思考题 1.简述多线程互斥和同步的概念 2.简述并区分程序、进程和线程三个概念。 3.线程有哪几个基本的状态?Java中线程调度遵循何种原则? 4.实现多线程可以用哪两种基本方法?将这两种方法进行比较。 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验九 用户图形界面GUI标准组件及事件处理 一、实验目的 1. 掌握常用GUI控制组件的使用方法。 2. 掌握事件处理的方法。 3.了解swing控件的概念。 二、实验内容 1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。 2.编程包含一个文本框和一个文本区域,文本框内容改变时,将文本框中的内容显示在文本区域中;在文本框中按回车键时,清空文本区域的内容。 3.编程包含一个复选按钮和一个普通按钮,复选按钮选中时,普通按钮的背景色为青色,未选中时为灰色。 4.编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为"普通"、"黑体"和"斜体"。选择文本标签为"普通"的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为"黑体"的单选按钮时,普通按钮中的文字的字体为黑体,选择文本标签为"斜体"的单选按钮时,普通按钮中的文字的字体为斜体。 5.编程包含一个下拉列表和一个按钮,下拉列表中有10、14、18三个选项。选择10时,按钮中文字的字号为10,选择14时,按钮中文字的字号为14,选择18时,按钮中文字的字号为18。 6.编程包含一个列表和两个标签,在第一个标签中显示列表中被双击的选项的内容,在第二个标签中显示列表中被选中的所有选项的内容。 7.编程确定当前鼠标的位置坐标。 8.编程创建一个Frame,实现窗口的监听器接口。 9.编程使用BorderLayout布局方式放置5个按钮。 三、思考题 1.Java的事件处理机制是怎样的? 2.若一个数据只有两种取值可能,采用哪种组件表示比较合适?如果有二种到三种取值可能,采用哪种合适?如果取值的可能大于5个,采用哪种组件合适? 3.事件监听器和事件适配器的关系是什么? 4.编程包含两个按钮和一个标签,将发生单击事件的按钮上的文本信息显示在标签中。 提示:关键代码如下: b1.addActionListener(new B1()); b2.addActionListener(new B2()); class B1 implements ActionListener { public void actionPerformed(ActionEvent e) { who.setText("Button 1"); } } class B2 implements ActionListener { public void actionPerformed(ActionEvent e) { who.setText("Button 2"); } } 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验十 Applet的编写 一、实验目的 1.掌握Java Applet程序结构和开发过程 2.了解Applet运行机制 3.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法。 4.了解Applet与浏览器的通信。 5.掌握在Applet图形界面设计。 二、实验内容与要求 1.Java Applet程序开发过程 输入一个applet源程序,学习编辑、编译、运行程序的方法。 简单的Applet小程序 例1-2 // HelloWorldApplet.java import java.awt.*; import java.applet.*; public class HelloWorldApplet extends Applet{ //anapplet public void paint(Graphics g){ g.drawString(″Hello World in Applet!″,20,20); } } 这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译: d:\user>javac HelloWorldApplet.java 得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。它的<HTML>文件如下: <HTML> <HEAD> <TITLE>An Applet</TITLE> </HEAD> <BODY> <applet code=”HelloWorldApplet.class”width=200 height=40> </applet> </BODY> </HTML> 其中用<applet>标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,把这个HTML文件存入Example.html,然后运行: d:\user>appletviewer Example.html 这时屏幕上弹出一个窗口,其中显示Hello World in Applet!。 2.运行下面的程序,掌握Applet的生命周期与绘图周期。 import java.applet.*; import java.awt.*; public class LifeCycle extends Applet{ private int InitCnt; private int StartCnt; private int StopCnt; private int DestroyCnt; private int PaintCnt; public LifeCycle(){//在init()执行前执行构造函数 InitCnt = 0; StartCnt = 0; StopCnt = 0; DestroyCnt = 0; PaintCnt = 0; } public void init(){ resize(320, 240); InitCnt++; } public void destroy(){ DestroyCnt++; } public void start(){ StartCnt++; } public void stop(){ StopCnt++; } public void paint(Graphics g){ PaintCnt++; g.drawLine(20,200,300,200); //画出坐标轴和标尺 g.drawLine(20,200,20,20); g.drawLine(20,170,15,170); g.drawLine(20,140,15,140); g.drawLine(20,110,15,110); g.drawLine(20,80,15,80); g.drawLine(20,50,15,50); g.drawString("Init()",25,213); g.drawString("Start()",75,213); g.drawString("Stop()",125,213); g.drawString("Destroy()",175,213); g.drawString("paint()",235,213); g.fillRect(25,200-InitCnt*30,40,InitCnt*30); //显示各种方法被调用的次数 g.fillRect(75,200-StartCnt*30,40,StartCnt*30); g.fillRect(125,200-StopCnt*30,40,StopCnt*30); g.fillRect(175,200-DestroyCnt*30,40,DestroyCnt*30); g.fillRect(235,200-PaintCnt*30,40,PaintCnt*30); } } 3. 编写嵌入Applet的Html页面代码,同时编写applet实现下图中的功能。 4.写Applet,从HTML文件中获取两个字符串参数,并将它们在浏览器中鼠标单击的位置显示出来。 5.写Applet,显示heep://www.baidu.com的页面内容。 6.写Applet,包含一个文本框和一个按钮,单击按钮时,在浏览器的状态行显示文本框中的内容。 7.写Applet,绘制直线、各种矩形、多边形、圆和椭圆等图形。 8.写Applet,显示不同大小不同风格、类型的字体。 9.写Applet,显示一排用随机定义的颜色所填充的小方块。 10.Applet,在浏览器中显示图片文件,包括原图、缩小一半图、宽扁图和瘦高图。 11.Applet播放两段音乐,一段是连续播放的背景音乐,一段是独立的整段音乐。 12. 编写一个Applet程序,能够显示动画(如圆在屏幕上模拟太阳的运动),并且可以用鼠标控制动画的启动和停止。 三、思考题 1、说明Applet的生命周期。 2、构造方法、start()方法和init()方法谁先被执行? 2、说明Applet 类的继承关系。 3、Applet如何与网页中其他对象通信 4、说明Java和JavaScript的区别。 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验十一 Java网络编程技术 一、实验目的 1.掌握InetAddress类的使用。 2.掌握TCP与UDP编程:Socket与Datagram的概念和编程方法。 3.掌握URL类的使用:URL的概念和编程。 二、实验内容 1.使用InetAddress类的方法获取http://www.ytu.edu.cn/的主机的IP地址;获取本地机的名称和IP地址。 2.使用Socket编程,客户机发送数据到服务器,服务器将接收到的数据返回给客户机。 3.将上面的程序进行改写,使用多线程实现服务器能同时处理多个客户机的请求。 4.使用UDP编程,客户机发送数据到服务器,服务器将接收到的数据返回给客户机。 5.运行下面的程序,掌握获取URL信息的一些方法。 import java.net.*; import java.io.*; public class URLTest { public static void main(String[] args){ URL url=null; InputStream is; try{ url=new URL("http://localhost/index.html"); is=url.openStream(); int c; try{ while((c=is.read())!=-1) System.out.print((char)c); }catch(IOException e){ }finally{ is.close(); } }catch(MalformedURLException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } System.out.println("文件名:"+url.getFile()); System.out.println("主机名:"+url.getHost()); System.out.println("端口号:"+url.getPort()); System.out.println("协议名:"+url.getProtocol()); } } 6.运行下面的程序,掌握利用URL类获取网络资源的方法。 import java.net.*; import java.io.*; public class URLReader { public static void main(String[] args) throws Exception { URL web = new URL("http://166.111.7.250:2222/"); BufferedReader in = new BufferedReader(new InputStreamReader(web.openStream())); String inputLine; while ((inputLine = in.readLine()) != null)System.out.println(inputLine); in.close(); } } 7.运行下面的程序,掌握URLConnection对URL资源的读取 import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(String[] args) throws Exception { URL web = new URL("http://166.111.7.250:2222/"); URLConnection webc=web.openConnection(); //get an instance of URLConnection BufferedReader in = new BufferedReader(new InputStreamReader( webc.getInputStream())); //use of URLConnection String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } } 8.运行下面的程序,掌握URLConnection对URL资源的写入。 import java.io.*; import java.net.*; public class Reverse { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java Reverse string_to_reverse"); System.exit(1); } String stringToReverse=args[0]; URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.println("string=" + stringToReverse); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } } 三、思考题 1.什么是URL?一个URL地址由哪些部分组成? 2.网络环境下的C/S模式的基本思想是什么?什么是客户机?什么是服务器?它们各自的作用如何?C/S模式的基本工作过程如何? 3.简述流式Socket的通信机制。它的最大特点是什么? 4.数据报通信有何特点?简述Java实现数据报通信的基本工作过程。 5、如何在C/S间传递整形,双精度数 6、如何在C/S间传递图片 7、什么是数据报,它有什么功能? 四、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可),在下一次上实验课时提交。 3、评出成绩,按五级(A,B,C,D、E)评分。 实验十二 综合设计实验 Applet多媒体应用设计—“拼图游戏” 一、实验目的 为了进一步巩固课堂上所学到的知识,深刻把握Java技术的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,特开设综合设计实验实验项目。要求学生掌握: 1) 掌握Java的语言规范,面向对象的核心概念和特性。 2) 掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序、Applet等。 3) 掌握Java应用软件的开发环境和开发过程 4) 掌握面向对象的思想和程序设计方法。 二、实验内容 拼图游戏是一个简单的Java小程序(Applet),它的游戏规则如下:将一张大图打散成9张小图,然后在游戏里任意挑8张图,贴在3行3列的矩阵中的任意位置。通过鼠标或键盘的方向键移动打乱的8张图片,让其复原成原来的顺序,玩家就胜利了,游戏就结束了。在游戏结束之后,会算出玩家的得分。 三、实验报告 1、实验完成后,检查是否达到试验目的。 2、编写实验报告(打印或手写均可)。 3、评出成绩,按五级(A,B,C,D、E)评分。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
- 3
前往页