1、第一章 习题及思考题 1、 Java程序是由什么组成的?一个程序中必须有 public类吗? Java源文件的命名规则是怎样的? 答:一个 Java源程序是由若干个类组成。一个 Java程序不一定需要有 public类:如果源文件中有多个类时,则只能有一个类是 public类;如果源文件中只有一个类,则不将该类写成 public也将默认它为主类。源文件命名时要求源文件主名应与主类(即用 public修饰的类)的类名相同,扩展名为 .java。如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它 将无法进行被继承使用。另外,对 Applet小应用程序来说,其主类必须
2、为 public,否则虽然在一些编译编译平台下可以通过(在 BlueJ下无法通过)但运行时无法显示结果。 2、怎样区分应用程序和小应用程序?应用程序的主类和小应用程序的主类必须用 public修饰吗? 答: Java Application是完整的程序,需要独立的解释器来解释运行;而 Java Applet则是嵌在 HTML编写的 Web页面中的非独立运行程序,由 Web浏览器内部包含的 Java解释器来解释运行。 在源程序代码中两者的主 要区别是:任何一个 Java Application 应用程序必须有且只有一个 main方法,它是整个程序的入口方法;任何一个 Applet小应用程序要求程
3、序中有且必须有一个类是系统类 Applet 的子类,即该类头部分以extends Applet结尾。 应用程序的主类当源文件中只有一个类时不必用 public修饰,但当有多于一个类时则主类必须用 public修饰。小应用程序的主类在任何时候都需要用 public来修饰。 3、开发与运行 Java程序需要经过哪些主要步骤和过程? 答:主要有三个步骤 ( 1)、用文字 编辑器 notepad(或在 Jcreator,Gel, BuleJ,Eclipse, Jbuilder等)编写源文件; (2)、使用 Java编译器(如 Javac.exe)将 .java源文件编译成字节码文件 .class; (
4、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.2bin;%PATH% 当程序需要第三方的类库支持 , 而且比较常用 , 就可以采用此种方法
5、.比如常用的数据库驱动程序 , 写 servlet 需要的 servlet 包等等 . 设置方法就是在环境变量中加入 CLASSPATH. 然后就可以直接编译运行了 .Java 运行环境从CLASSPATH 环境变量中寻找要执行的用户 项目(三方的类库)。可以按如下的方式设置 SET CLASSPATH=.;C:J2SDK1.4.2jrelibjaws.jar;%CLASSPATH% 通常我们要从当前目录中寻找用户类,因为开发的程序相关的类放在这里 ,. 表示当前工作目录 . 5、 Java语言特点是什么? 答: Java是一种简单的面象对象的分布式的解释的健壮的安全的结构中立的可移植的性能很
6、优异的多线程的动态的语言。 6、简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 解:面向 过程问题求解利用计算机能够理解的离散逻辑来描述和表达所求解的问题本身以及具体问题解决的过程,它的核心是算法和数据结构,面向对象的问题求解则利用符合人们日常思维习惯的方式去模拟所求解的问题,模拟它的构成、特征和各种动态行为,从而得到问题的解答。它的核心是类、对象和设计模式。 常见的面向过程的编程语言有 BASIC, FORTRAN, Pascal, C 等。常见的面向对象的编程语言有 Smalltalk-80,Object Pascal, C+, Java 等。
7、第二章 习题及思考题 1. 试分析基本数据类 型和引用数据类型的基本特点? 答: Java 的基本数据类型都有固定的数据位,不随运行平台的变化而变化。 引用类型都是用类或对象实现的 2. 请使用异或运算符 , 实现两个整数的交换。 答: int x=5,y=19; x=xy; y=yx; x=xy; 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则
8、下列说法正确的是: 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
9、.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 -2147
10、483648 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,则执行
11、 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、
12、int t332=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=0?disc:-disc; p2=Math.sqrt(abs
13、disc)/(2.0*a); if(disc0) str=args0; System.out.println(“str=“+str); n=str.length(); char ch1,ch2; String temp=“; for (i=0;ij/2) System.out.println(“+j+“ 是素数“); 9、在一个循环中使用 break,continue和 return有什么不同? 解:在循环中使用 break语句,将使循环终止,流程从 break语句处跳转到 break语句所在的 循环外面的第一个语句继续执行。 在循环中使用 continue 语句,将提前结束本轮循环,流程跳转
14、到 continue语句所在循环的第 一个语句继续执行。 在循环中使用 return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的 下一个语句执行。 10、结构化程序设计有哪三种流程?他们分别对应 Java中那些语句 解:结构化程序设计有三种基本流程:循环、分支和顺序。 Java程序中的分支语句包含 if 语句、 switch语句;循环语句包括了 while语句, do-while语句、 for语句;其他语句如变量、对象定义、赋值语句、方法调用语句、以及上面的循环结构、分支结构等按照上下文排列都是顺序语句。 第四章 习题及思考题 1.什么是类?什么是对象?对象和类是什么关系?
15、答:类是抽取了同类对象的共同属性和行为形成的对象或实体的“模板”。 对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结 合在一起所构成的独立实体。 类和对象之间的关系是抽象和具体的关系:类表达的是一种抽象的概念,它描述 了该类对象的共同特征;而对象是具体事物,以类为模板来生成,它具有 自 己的状态。举例:类与对象的关系犹如零件的图纸与按图纸制造出的零件关系一样;图纸(类)描述了零件(对象)的共同特征,每个零件(对象)又有自己的个性,如加工精度的不同等等 2、 什么是方法?方法的结构是怎样的?设计方法应考虑哪些因素? 答:方法是 Java 类的一个组成部分,通过类的
16、方法改变对象的状态。 方法的结构: 方法修饰符 返回值类型 方法名( 形参列表 ) throws异常列表 方法体; 设计方法应考虑因素有: (1) 方法名是 Java 中任意的标识符,按照 命名的约定,方法名应该是有意义的 动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。 (2) 返回值类型可以是任意的 Java 类型,甚至可以是定义此方法的类。如果方 法没有返回值,则用 void表示。 (3) 形式参数列表是可选的。如果方法没有形式参数,就用一对小括号 “()”表 示。形式参数列表的形式如下: (类型 形参名,类型 形参名, ) (4) throws异
17、常列表规定了在方法执行中可能导致的异常。 3.创建一个有两个方法的 类,其中第一个方法两次调用第二个方法,第一次不使 用 this,第二个使用 this。 class Rectangle /矩形类 int width; / 矩形的宽 int usethis(int width) /返回宽度的函数 this. width= width; /指自己这个对象 return width; int unusethis(int width) int w=width; return w; public static void main(String args) Rectangle r=new Rectang
18、le(); /类对象的实例化 System.out.println(“It is about the node of this.“); / 输出语句 System.out.println(r.usethis(1); System.out.println(r.unusethis(2); 运行结果: It is about the node of this. 1 2 4、创建一个类,该类还有 int 和 char 类型的成员变量且未被初始化,然后编程输 出这些成员变量的值,查看 java是否执行了默认的初始化操作。 参考答案: public class CuoShiHua int a; /整型变量
19、 char b; /字符型变量 public void show() /用来输出未被初始化的变量的 System.out.println(a); System.out.println(b); public static void main(String args) CuoShiHua c = new CuoShiHua(); /声明类的对象并实例化 c.show(); /函数调用 输出结果: 0 /小方格代表空格 5、创建一个类,该类含有的成员变量和成员方法,创建一个该类的对象,察看 当时图访问这些成员时,编译程序会给出那些信息(注意:在同一目录下的类都属于一个默认的包)。 class tex
20、t1 static int a; /当被定义为 static类型时,为类变量,可被对象 或类调用 int b; /对象变量,只能被对象调用 public void display(int a,int b) /成员方法 System.out.println(“static int a=“+a); System.out.println(“ int b=“+b); public static void display(int b) System.out.println(“static display: int b=“+b); public static void main(String args) text1 tt=new text1(); tt.display(5,6); /text1.display(5,6)是错误的:对象变量或对象方法只能被对象 tt 调用 text1.display(0);