java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程习题及思考题答案.doc...

253b171540df25e1b84436cbe50dfc72.gifJava程序设计之网络编程基础教程习题及思考题答案.doc

第一章 习题及思考题 1、 Java程序是由什么组成的一个程序中必须有 public类吗 Java源文件的命名规则是怎样的 答一个 Java源程序是由若干个类组成。一个 Java程序不一定需要有 public类如果源文件中有多个类时,则只能有一个类是 public类;如果源文件中只有一个类,则不将该类写成 public也将默认它为主类。源文件命名时要求源文件主名应与主类(即用 public修饰的类)的类名相同,扩展名为 .java。如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它 将无法进行被继承使用。另外,对 Applet小应用程序来说,其主类必须为 public,否则虽然在一些编译编译平台下可以通过(在 BlueJ 下无法通过)但运行时无法显示结果。 2、怎样区分应用程序和小应用程序应用程序的主类和小应用程序的主类必须用 public修饰吗 答 Java Application是完整的程序,需要独立的解释器来解释运行;而 Java Applet则是嵌在 HTML编写的 Web页面中的非独立运行程序,由 Web浏览器内部包含的 Java解释器来解释运行。 在源程序代码中两者的主 要区别是任何一个 Java Application 应用程序必须有且只有一个 main方法,它是整个程序的入口方法;任何一个 Applet小应用程序要求程序中有且必须有一个类是系统类 Applet 的子类,即该类头部分以extends Applet结尾。 应用程序的主类当源文件中只有一个类时不必用 public修饰,但当有多于一个类时则主类必须用 public修饰。小应用程序的主类在任何时候都需要用 public来修饰。 3、开发与运行 Java程序需要经过哪些主要步骤和过程 答主要有三个步骤 ( 1)、用文字 编辑器 notepad(或在 Jcreator,Gel, BuleJ,Eclipse, Jbuilder等)编写源文件; 2、使用 Java编译器(如 Javac.将 .java源文件编译成字节码文件 .class; 3、运行 Java程序对应用程序应通过 Java解释器(如 java.来运行,而对小应用程序应通过支持 Java 标准的浏览器 如 Microsoft Explorer来解释运行。 4、安装 JDK 之后如何设置 JDK 系统的 PATH, CLASSPATH他们的作用是什么 答、更新 系统 PATH的方法随 Windows版本不同而不同。对于 Windows 95/98,可以将下列项目作为 Cautoc.bat文件的最后一行 SET PATH Cj2sdk1.4.2bin;PATH 当程序需要第三方的类库支持 , 而且比较常用 , 就可以采用此种方法 .比如常用的数据库驱动程序 , 写 servlet 需要的 servlet 包等等 . 设置方法就是在环境变量中加入 CLASSPATH. 然后就可以直接编译运行了 .Java 运行环境从CLASSPATH 环境变量中寻找要执行的用户 项目(三方的类库)。可以按如下的方式设置 SET CLASSPATH.;CJ2SDK1.4.2jrelibjaws.jar;CLASSPATH 通常我们要从当前目录中寻找用户类,因为开发的程序相关的类放在这里 ,. 表示当前工作目录 . 5、 Java语言特点是什么 答 Java是一种简单的面象对象的分布式的解释的健壮的安全的结构中立的可移植的性能很优异的多线程的动态的语言。 6、简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 解面向 过程问题求解利用计算机能够理解的离散逻辑来描述和表达所求解的问题本身以及具体问题解决的过程,它的核心是算法和数据结构,面向对象的问题求解则利用符合人们日常思维习惯的方式去模拟所求解的问题,模拟它的构成、特征和各种动态行为,从而得到问题的解答。它的核心是类、对象和设计模式。 常见的面向过程的编程语言有 BASIC, FORTRAN, Pascal, C等。常见的面向对象的编程语言有 Smalltalk-80,Object Pascal, C, Java等。 第二章 习题及思考题 1. 试分析基本数据类 型和引用数据类型的基本特点 答 Java 的基本数据类型都有固定的数据位,不随运行平台的变化而变化。 引用类型都是用类或对象实现的 2. 请使用异或运算符 , 实现两个整数的交换。 答 int x5,y19; xxy; yyx; xxy; 3. 下列哪个是合法的标识符 。 A、 ab B、 _Hello C、 2nd D、 Chong qing 答 B 4. 下列哪些是合法的标识符()。 A、 new B、 class C、 int D、 const2 答 D 5. 如果定义有变量 double d1, d24.0则下列说法正确的是 A、变量 d1,d2均初始化为 4.0 B、变量 d1没有初始化 ,d2初始化为 4.0 C、变量 d1,d2均未初始化 D、变量 d2没有初始化 ,d1初始化为 4.0 答 B 6. 判断题所有的变量在使用前都必须进行初始化。( ) 答正确。 7. 内部数据类型 byte的取值范围是 A、 0 65, 535 B、 -128 127 C、 -32,768 32,767 D、 -256 255 答 B 8. 下列哪些是不能通过编译的语句( ) A、 int i 32; B、 float f 45.0; C、 double d 45.0; D、 char a c ; 答 B 9. 判断题 Java中数据类型的长度与具体使用的机器相关。( ) 答错误。 10. 如果定义有 double x; float y; int m,则表达式 x*y-m的类型为( ) A、 double B、 float C、 int D、 short 答 A 11. 如果定义有 short s; byte b; char c,则表达式 s*bc的类型为( ) A、 char B、 short C、 int D、 byte 答 C 12. 已知 int i 2147483647; i; 则 i 的值等于多少( ) A -2147483648 B 2147483647 C 2147483648 答 A 13. 已知 byte i 127; i; 则 i的值等于多少( ) A -128 B 127 C 128 答 A 14. 已知 byte i 127; ii1;这两行语句能否编译成功( ) 答编译不成功。 15. 执行以下程序段 int a5,b; ba*3后 b的值为( ) A、 17 B、 18 C、 16 D、 15 答 B 16. 如果 x3,y5,则表达式 x|y的值为( ) A、 15 B、 8 C、 1 D、 7 答 D 17. 如果 int a3,b2,则执行 a*b8后 a的值为( ) A、 20 B、 14 C、 30 D、 16 答 C 18. 若所用变量都已正确定义,以下选项中,非法的表达式是( ) A、 a4b1 B、 a3 C、 a1/2 D、 A32 答 C 19. 设有定义语句 int a1,1,2; 则以下对此语句的叙述错误的是 。 A、定义了一个名为 a的一维数组 B、 a数组有 3个元素 C、 a数组的下标为 1 3 D、数组中的每个元素是整型 答 C 20. 以下数组初始化形式正确的是 A、 int t11,2,3,4,5,6 B、 int t21,2,3,4,5,6 C、 int t3321,2,3,4,5,6 D、 int t4;t41,2,3,4,5,6 答 A 第三章 习题及思考题 1、编写一个程序,用选择法对数组 a20,10,55,40,30,70,60,80,90,100进行从大到小 的排序 解 public class ArraySort public static void mainString args int array20,10,55,40,30,70,60,80,90,100; int i,j,k,t; int marray.length; fori0;i0disc-disc; p2Math.sqrtabsdisc/2.0*a; ifdisc0 strargs0; System.out.println“str“str; nstr.length; char ch1,ch2; String temp; for i0;ij/2 System.out.printlnj“ 是素数“; 9、在一个循环中使用 break,continue和 return有什么不同 解在循环中使用 break语句,将使循环终止,流程从 break语句处跳转到 break语句所在的 循环外面的第一个语句继续执行。 在循环中使用 continue 语句,将提前结束本轮循环,流程跳转到 continue语句所在循环的第 一个语句继续执行。 在循环中使用 return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的 下一个语句执行。 10、结构化程序设计有哪三种流程他们分别对应 Java中那些语句 解结构化程序设计有三种基本流程循环、分支和顺序。 Java程序中的分支语句包含 if 语句、 switch语句;循环语句包括了 while语句, do-while语句、 for语句;其他语句如变量、对象定义、赋值语句、方法调用语句、以及上面的循环结构、分支结构等按照上下文排列都是顺序语句。 第四章 习题及思考题 1.什么是类什么是对象对象和类是什么关系 答类是抽取了同类对象的共同属性和行为形成的对象或实体的“模板”。 对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结 合在一起所构成的独立实体。 类和对象之间的关系是抽象和具体的关系类表达的是一种抽象的概念,它描述 了该类对象的共同特征;而对象是具体事物,以类为模板来生成,它具有 自 己的状态。举例类与对象的关系犹如零件的图纸与按图纸制造出的零件关系一样;图纸(类)描述了零件(对象)的共同特征,每个零件(对象)又有自己的个性,如加工精度的不同等等 2、 什么是方法方法的结构是怎样的设计方法应考虑哪些因素 答方法是 Java类的一个组成部分,通过类的方法改变对象的状态。 方法的结构 方法修饰符 返回值类型 方法名( 形参列表 ) throws异常列表 方法体; 设计方法应考虑因素有 1 方法名是 Java 中任意的标识符,按照 命名的约定,方法名应该是有意义的 动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。 2 返回值类型可以是任意的 Java 类型,甚至可以是定义此方法的类。如果方 法没有返回值,则用 void表示。 3 形式参数列表是可选的。如果方法没有形式参数,就用一对小括号 “”表 示。形式参数列表的形式如下 类型 形参名,类型 形参名, 4 throws异常列表规定了在方法执行中可能导致的异常。 3.创建一个有两个方法的 类,其中第一个方法两次调用第二个方法,第一次不使 用 this,第二个使用 this。 class Rectangle 矩形类 int width; 矩形的宽 int usethisint width 返回宽度的函数 this. width width; 指自己这个对象 return width; int unusethisint width int wwidth; return w; public static void mainString args Rectangle rnew Rectangle; 类对象的实例化 System.out.println“It is about the node of this.“; 输 出 语 句 System.out.printlnr.usethis1; System.out.printlnr.unusethis2; 运行结果 It is about the node of this. 1 2 4、创建一个类,该类还有 int 和 char 类型的成员变量且未被初始化,然后编程输 出这些成员变量的值,查看 java是否执行了默认的初始化操作。 参考答案 public class CuoShiHua int a; 整型变量 char b; 字符型变量 public void show 用来输出未被初始化的变量的 System.out.printlna; System.out.printlnb; public static void mainString args CuoShiHua c new CuoShiHua; 声明类的对象并实例化 c.show; 函数调用 输出结果 0 小方格代表空格 5、创建一个类,该类含有的成员变量和成员方法,创建一个该类的对象,察看 当时图访问这些成员时,编译程序会给出那些信息(注意在同一目录下的类都属于一个默认的包)。 class text1 static int a; 当被定义为 static类型时,为类变量,可被对象 或类调用 int b; 对象变量,只能被对象调用 public void displayint a,int b 成员方法 System.out.println“static int a“a; System.out.println“ int b“b; public static void displayint b System.out.println“static display int b“b; public static void mainString args text1 ttnew text1; tt.display5,6; text1.display5,6是错误的对象变量或对象方法只能被对象 tt 调用 text1.display0; 当被定义为 static类型时,为类方法,可被对象或类调用 tt.display23; tt.a9; text1.a4; tt.b3; 运行结果 static int a5 int b6 static display int b0 static display int b23 6、下面给出了一个矩形类 Rectangle,其中含有多个构造方法。上机编译并运行 此程序,观察运行结果,体会其中不同构造方法的设计和使用。 import java.io.*; class Rectangle 矩形类 private int width; 矩形的宽度 private int length; 矩形的长度 Rectangle 矩形的不带参数的构造函数,缺省的给出长( 30)和宽( 20) length30;width20; Rectangleint l,int w 矩形的带参数的构造函数 lengthl;widthw; RectangleRectangle r 此构造方法以另一个 Rectangle 作为参数 widthr.width; 通过对象调用函数并附值给相应变量 lengthr.length; int width 返回宽度 return width; int length 返回长度 return length; public class CRctngle public static void main String args Rectangle x1new Rectangle; 声明类的对象并实例化 Rectangle x2new Rectangle50,40; 声明类的对象并初始化 Rectangle x3new Rectanglex1; System.out.printlnx1.length; System.out.printlnx1.width; System.out.printlnx2.length; System.out.printlnx2.width; System.out.printlnx3.length; System.out.printlnx3.width; 运行结果 30 20 50 40 30 20 体会此程序中共定义了 3个构造方法 Rectangle、 Rectangleint l,int w 、 RectangleRectangle r ,其中 Rectangle是没有参数的, Rectangleint l,int w以常数作为参数, RectangleRectangle r是以对象最为参数。构造函数的调用实在用 new 运算符创建类对象是由系统自动完成的,构造函数的参数传递和形实结合也是由系统在调用的同时自动完成。 7、下面给出了一个计算阶乘的类 Fact和使用该类计算阶乘的程序 Check1。编译并运行该程序,观察运行结果,体会方法的参数的传递和返回值的用法。在调用时改变参数的个数和类型,看看编译时会得到什么信息。 class Fact float fact int n 定 义 计 算 n 的 方 法 int i; float x 1; fori1;ijavac Example5_5.java 编译通过后 ,你要使用解释器 java. 来执行你的字节码文件 Djava Example5_5 “123.78” 23324.9“ “213214“ 回车 这时 ,程序中的 args0,arg1,arg2分别得到字符串 “123.78“,“23324.9“ 和“213214“. 在源程序中我们再将这些字符串转化为数值进行运算 ,得到所需的结果 . 4、将一个字符串数组按字典序重新排列 . class Example5_4 public static void mainString args String a“boy“,“apple“,“Applet“,“girl“,“Hat“; forint i0;ijava ReadChar 10 char uiwryiufys u i w r y i u f y s 第十一章 习题及思考题 1、什么是 AWT,什么是 Swing 答 AWT( Abstract Window Toolkit)是 Java是进行可视化开发而提供的类库。 AWT提供了基本的用户接口组件,如 label,button,menu,lists等。另外也提供事件处理机制,支持 clipboard 及数据转换( datatransfer)以及图像操作。 Swing和 AWT一样都是 Java提供多种图形用户接口包中的抽象窗口工具组件。 2、 AWT中包含了那些常用的组件,有什么用途 解 AWT中基本组件有按钮( Button)、标签( Label)、复选框( Checkbox)、下拉列表框( Choice)、列表框( List)、单选框 CheckboxGroup、单行文本框 TextField、多行文本框TextArea和滚动条 Scrollbar等。 AWT用 Container类来定义最基本的容器,所有可以作为容器 的窗口对象都是 Container类的实例或子类所生成的对象。 AWT提供了四个容器类。它们是 Window类及其两个子类、 Frame类、 Dia1og类和 Panel 类。除了 AWT 提供的容器外, Applet 类也是一个容器,它是 Panel类的一个子类。 用户创建的每个新窗口都能有它们自己的菜单条,每个菜单条可以有一定数量的菜单,菜单又可以有自己的菜单项。 AWT 提供了一些类用于这些组件,它们分别是 MenuBar类、 Menu类和 MenuItem类。 java.awt 软件包不仅仅包含组件,还包含与绘图和事件处理有关的 类。正如我们前面所讲到的,组件是集中放置在容器中的。但我们没有提到每个容器如何使用布局管理器( Layout manager)来控制它所包含的组件尺寸和排放位置。java.awt 软件提供了几个布局管理器类( BorderLayout 类、 CardLaout 类等)。用户可根据需要选择适当的布局管理器对组件进行布局。 java.awt 软件包还提供了几个类来表示尺寸和形状。例如 Dimension 类,它指定了一个矩形区域的尺寸; Insets 类,它通常用来指定容器的周边与容器的显示区域之间的空白大小; Shape类则包 含了点、矩形和多边形。 AWT中的 Color类在表示和调整颜色方面是十分有用的。它定义了一些常量来表示常用的颜色,比如, Color.black 表示黑色,虽然它使用的颜色是RGBred-green-b1ue格式,但它也可以理解为 HSB( hue-saturation-brightness)格式。 AWT 中的 Image 类提供了图像数据的操作途径。 Applet 可以通过 Applet 的getImage方法获得 GIFGraphic Ination at和 JPEGJoint photographic Expert Group图像的对象,非 Applet类则可以使用 Toolkit类获得。 Toolkit类针对 AWT的平台独立性,提供了一个非独立于平台的接口。但是,大部分程序除了获得图像外,不能直接使用 Toolkit对象。 用户还可以使用 Font 和 FontMetrics类来控制所画文本的外观。 Font 类使用户可以获得关于字体的信息并创建不同的字体对象。 FontMetrics 类,使用户可以获得一些特定字体在尺寸上的细节信息。用户可以用 Componet 类和 Graphics类的 setFont方法设 置一个组件所使用的字体。 最后要提到的是 Graphics 类和 Event 类。 Graphics 类和 Event 类对于 AWT的绘画及事件处理系统是非常重要的,没有 Graphics对象,程序就不能往屏幕上画任何东西。而一个 Event类则表示一个用户的动作,比如单击鼠标。 3、什么是事件什么是委托事件处理模型 解用户接口的作用是使程序的使用者与程序之间进行交互,如果使用户接口具有交互能力,就必须涉及到事件处理。所谓 “事件 ”,就是指在系统中有某些我们所关心的事情(如鼠标移动,用户按下了某个键等)发生了 ,然后系统便通知我们去处理这些事情。这样的概念一般在采用图形用户界面环境的操作系统中,是十分常见的。当用户在组件上作出动作时(如在组件上单击鼠标或按回车键),就创建了一个 Event 对象。 Java 事件处理模型有层次事件处理模型和委托事件处理模型。由于同一个事件源上可能发生多种事件,因此 java 常采取了委托处理机制 Delegation Model,事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。比如在 Canvas 对象上既可能发生鼠标事件,也可能发生键盘事件,该 Canvas 对象就可以授权给事件处理者一来处理鼠标事件,同时授权给事件处理者二来处理键盘事件。有时也将事件处理者称为监听器,主要原因也在于监听器时刻监听着事件源上所有发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理。委托模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。事件处理者(监听器)通常是 一个类,该类如果要能够处理某种 类型的事件,就必须实现与该事件类型相对的接口。例如例 5.9中类 ButtonHandler之所以能够处理 ActionEvent事件,原因在于它实现了与 ActionEvent事件对应的接口 ActionListener。每个事件类都有一个与之相对应的接口。 4、编程包含一个标签和一个按钮,单击按钮时,标签的内容在 “你好 “和 “再见 “之间切换。 解 import java.awt.*; import java.awt.event.*; class but implements ActionListener Frame f; Label label; Button b; public void begin fnew Frame“Label and Button ver1.0“; f.setSize200,200; f.setLocation100,100; f.setLayoutnew FlowLayoutFlowLayout.LEFT,20,20; labelnew Label“Hello“,Label.CENTER; f.addlabel; bnew Button“Press“; f.addb; b.addActionListenerthis; f.addWindowListenernew WinClose; f.setVisibletrue; public void actionPeredActionEvent e ife.getSourceb iflabel.getText“Hello“ label.setText“Goodbye“; else label.setText“Hello“; class WinClose extends WindowAdapter public void windowClosingWindowEvent e System.exit0; public class work1 public static void mainString args new but.begin; 5、编程包含一个复选按钮和一个普通按钮,复选按钮选中时,普通按钮的背景色为青色,未选中时为灰色。 import java.awt.*; import java.awt.event.*; class choose implements ItemListener Frame f; Checkbox c; Button b; public void begin fnew Frame“Checkbox“; f.setSize200,200; f.setLayoutnew FlowLayout; cnew Checkbox“Color Change“; f.addc; bnew Button; b.setBackgroundColor.GRAY; f.addb; c.addItemListenerthis; f.addWindowListenernew WinClose; f.setVisibletrue; public void itemStateChangedItemEvent e ife.getStateChangee.SELECTED else b.setBackgroundColor.GRAY; class WinClose extends WindowAdapter public void windowClosingWindowEvent e System.exit0; public class work3 public static void mainString args new choose.begin; 6、编程包含一个下拉列表和一个按钮,下拉列表中有 10、 14、 18三个选项。选择 10 时,按钮中文字的字号为 10,选择 14 时 ,按钮中文字的字号为 14,选择 18时,按钮中文字的字号为 18。 import java.awt.*; import java.awt.event.*; class WinClose extends WindowAdapter public void windowClosingWindowEvent e System.exit0; class choice implements ItemListener Frame f; Choice c; Button b; public void begin fnew Frame“Choice“; f.setLayoutnew GridLayout; f.setSize300,300; cnew Choice; c.addItem“10“; c.addItem“14“; c.addItem“18“; f.addc; bnew Button“Font“; b.setSize50,50; f.addb; f.addWindowListenernew WinClose; c.addItemListenerthis; f.setVisibletrue; public void itemStateChangedItemEvent e String strc.getSelectedItem; ifstr“10“ b.setFontb.getFont.deriveFontFloat.parseFloatstr; ifstr“14“ b.setFontb.getFont.deriveFontFloat.parseFloatstr; ifstr“18“ b.setFontb.getFont.deriveFontFloat.parseFloatstr; publi c class work5 pub lic static void mainString args new choice.begin; 7、编程包含一个列表和两个标签,在第一个标签中显示列表中被双击的选项的内容,在第二个标签中显示列表中被选中的所有选项的内容。 import java.awt.*; import java.awt.event.*; class WinClose extends WindowAdapter public void windowClosingWindowEvent e System.exit0; class list implements ItemListener,ActionListener Frame f; Label lab1,lab2; List li; public void begin fnew Frame“List“; f.setLayoutnew GridLayout; f.setSize400,400; f.addWindowListenernew WinClose; lab1new Label; lab2new Label; lab1.setSize100,100; lab2.setSize100,100; f.addlab1; f.addlab2; linew List10,true; forint i0;i10;i li.addString.valueOfi; li.addActionListenerthis; li.addItemListenerthis; f.addli; f.setVisibletrue; public void itemStateChangedItemEvent e String str; forint row0;row10;row ifli.isIndexSelectedrow strstrli.getItemrow; else continue; lab2.setTextstr; public void actionPeredActionEvent e lab1.setTexte.getActionCommand; public class work6 public static void mainString args new list.begin; 8、编程确定当前鼠标的位置坐标。 import java.awt.*; import java.awt.event.*; class WinClose extends WindowAdapter public void windowClosingWindowEvent e System.exit0; class mouse

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值