Java程序设计之网络编程基础教程习题及思考题答案 下载本文

第一章 习题及思考题 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.exe)将.java源文件编译成字节码文件.class; (3)、运行Java程序:对应用程序应通过Java解释器(如java.exe)来运行,而对小应用程序应通过支持Java标准的浏览器(如Microsoft Explorer)来解释运行。

4、安装JDK之后如何设置JDK系统的PATH,CLASSPATH?他们的作用是什么?

答、更新系统PATH的方法随Windows版本不同而不同。对于Windows 95/98,可以将下列项目作为C:\\autoexec.bat文件的最后一行: SET PATH = C:\\j2sdk1.4.2\\bin;%PATH%

当程序需要第三方的类库支持, 而且比较常用, 就可以采用此种方法.比如常用的数据库驱动程序, 写 servlet 需要的 servlet 包等等. 设置方法就是在环境变量中加入 CLASSPATH. 然后就可以直接编译运行了.Java运行环境从CLASSPATH环境变量中寻找要执行的用户项目(三方的类库)。可以按如下的方式设置

SET CLASSPATH=.;C:\\J2SDK1.4.2\\jre\\lib\\jaws.jar;%CLASSPATH% 通常我们要从当前目录中寻找用户类,因为开发的程序相关的类放在这里,. 表示当前工作目录.

5、Java语言特点是什么? 答:Java是一种简单的面象对象的分布式的解释的健壮的安全的结构中立的可移植的性能很优异的多线程的动态的语言。

6、简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 解:面向过程问题求解利用计算机能够理解的离散逻辑来描述和表达所求解的问题本身以及

具体问题解决的过程,它的核心是算法和数据结构,面向对象的问题求解则利用符合人们日常思维习惯的方式去模拟所求解的问题,模拟它的构成、特征和各种动态行为,从而得到问题的解答。它的核心是类、对象和设计模式。

常见的面向过程的编程语言有BASIC,FORTRAN,Pascal, C等。常见的面向对象的编程语言有Smalltalk-80,Object Pascal, C++, Java等。

第二章 习题及思考题

1. 试分析基本数据类型和引用数据类型的基本特点?

答:Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。 引用类型都是用类或对象实现的

2. 请使用异或运算符^, 实现两个整数的交换。 答:int x=5,y=19; x=x^y; y=y^x; x=x^y;

3. 下列哪个是合法的标识符:( )。

A、a=b B、_Hello C、2nd D、Chong qing 答:B 4. 下列哪些是合法的标识符()。

A、new B、class C、int D、const2 答:D

5. 如果定义有变量double d1, d2=4.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*b+c的类型为( ): 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; i=i+1;这两行语句能否编译成功?( ) 答:编译不成功。 15. 执行以下程序段int a=5,b; b=++a*3后b的值为:( ) A、17 B、18 C、16 D、15 答: B 16. 如果x=3,y=5,则表达式x|y的值为:( ) A、15 B、8 C、1 D、7 答:D 17. 如果int a=3,b=2,则执行a*=b+8后a的值为:( )

A、20 B、14 C、30 D、16 答:C

18. 若所用变量都已正确定义,以下选项中,非法的表达式是:( ) A、a!=4||b==1 B、'a'%3 C、'a'=1/2 D、'A'+32 答:C

19. 设有定义语句int a[]={1,1,2}; 则以下对此语句的叙述错误的是( )。 A、定义了一个名为a的一维数组 B、a数组有3个元素

C、a数组的下标为1~3 D、数组中的每个元素是整型 答:C 20. 以下数组初始化形式正确的是:( ) A、int t1[][]={{1,2},{3,4},{5,6}} B、int t2[][]={1,2,3,4,5,6} C、int t3[3][2]={1,2,3,4,5,6} D、int t4[][];t4={1,2,3,4,5,6} 答:A

第三章 习题及思考题

1、编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小 的排序

解: public class ArraySort{

public static void main(String args[]){

int array[]={20,10,55,40,30,70,60,80,90,100}; int i,j,k,t; int m=array.length; for(i=0;i

if(array[j]

t=array[k];array[k]=array[i];array[i]=t; } for(i=0;i

System.out.println(\ } } 2、求两个整数的最大公约数 解public class Gcd_do { public static void main(String args[]) { int a=45,b=21,k=0;

System.out.print(\ do { k = a % b; a = b; b = k; } while (k!=0);

System.out.println(a); } } 3、请打印出如下九九乘法表

* | 1 2 3 4 5 6 7 8 9 -------|------------------------------------ 1 | 1 2 | 2 4 3 | 3 6 9

4 | 4 8 12 16 5 | 5 10 15 20 25 6 | 6 12 18 24 30 36 7 | 7 14 21 28 35 42 49 8 | 8 16 24 32 40 48 56 64 9 | 9 18 27 36 45 54 63 72 81 解:

public class MultiTable{

public static void main(String args[]) { int i,j,n=9; System.out.print(\ * |\ for (i=1;i<=n;i++)

System.out.print(\ \ System.out.print(\ for (i=1;i<=n;i++)

System.out.print(\ System.out.println(); for (i=1;i<=n;i++) {

System.out.print(\ \ |\ for (j=1;j<=i;j++)