文档库 最新最全的文档下载
当前位置:文档库 › JAVA程序设计 郭广军 课后答案

JAVA程序设计 郭广军 课后答案

JAVA程序设计    郭广军   课后答案
JAVA程序设计    郭广军   课后答案

《Java程序设计教程》习题及参考答案

作者:郭广军习题试题来源:郭广军点击数:2436 更新时间:2008-9-3

第1章Java语言概述

习题一

一、简答题

1.Java语言的诞生日是哪一天?它有哪些特点与优势?

2.Java语言程序分为哪几种?Java Application程序和Java Applet程序的主要区别是什么?3.Java Application程序在结构上有哪些特点?如何编译、运行?被编译后生成什么文件?该文件机器可以直接识别吗?如何执行?

4.安装JDK后如何对JA V A_HOME、PATH和CLASSPA TH环境变量进行设置?它们的作用是什么?

5.Java程序在书写上应注意哪些事项?有哪些编码规范?

6.为什么要对程序进行注释?Java中有哪几种注释?文档注释符与多行注释符有何不同?

二、选择题

1.下面关于Java Application 程序结构特点描述中,错误的是(D )。

A.一个Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。

B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。

C.组成Java Application程序的多个类中,有且仅有一个主类。

D.一个.java文件中定义多个类时,允许其中声明多个public类。

2.编译Java程序后生成的面向JVM的字节码文件的扩展名是(B )。

A..java B..class C..obj D..exe

3.下面关于Java 语言特点的描述中,错误的是(A )。

A.Java是纯面向对象编程语言,支持单继承和多继承。

B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。

C.Java支持多线程编程。

D.Java程序与平台无关、可移植性好。

4.Java SE的命令文件(java、javac、javadoc等)所在目录是(C )。

A.%JA V A_HOME%\jre B.%JA V A_HOME%\lib

C.%JA V A_HOME%\bin D.%JA V A_HOME%\demo

5.下列关于运行字节码文件的命令行参的描述中,正确的是(C )。

A.命令行的命令字被存放在args[0]中。

B.数组args[]的大小与命令行的参数的个数无关。

C.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中。

D.第一个命令行参数被存放在args[1]中。

6.paint()方法使用哪种类型的参数? (A )

A.Graphics B.Graphics2D C.String D.Color

7.Java的核心包中,提供编程应用的基本类的包是(B )。

A.java.util B.https://www.wendangku.net/doc/e03922404.html,ng C.java.applet D.java.rmi

8.编译Java程序时,用于指定生成class文件位置的选项是(A )。

A.-d B.-g C.-verbose D.-nowarn

9.下列标识符(名字)命名原则中,正确的是(C )。

A.类名的首字母小写B.接口名的首字母小写

C.常量全部大写D.变量名和方法名的首字母大写

10.下面哪些选项是正确的main方法说明?(D )

A.void main() B.private static void main(String args[])

C.public main(String args[]) D.public static void main(String args[])

11.下面哪种注释方法能够支持javadoc命令?(C )

A.// B./*...*/ C./**...*/ D./**...**/

三、判断题

1.Java语言具有较好的安全性和可移植性及与平台无关等特性。(√)

2.Java语言的源程序不是编译型的,而是编译解释型的。(√)

3.Java Application程序中,必有一个主方法main(),该方法有没有参数都可以。(√)4.java.util.Scanner(System.in)可以接收用户从键盘输入的简单数据。(√)

5.Java程序中不区分大小写字母。(×)

6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。(√)7.System类中的println()方法分行显示信息,而print()方法不分行显示信息。(√)

8.当前路径的标识是“.”。(√)

9.java命令不区分大小写,而javac命令区分大小写。(×)

10.printf()和format()方法使用指定格式字符串和参数,将格式化字符串写入到PrintStream 类型的输出流(System.out对象)中。(√)

11.在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。(×)四、编程题

1.分别用UltraEdit、NetBeans、Eclipse、JBuilder和JCreator编写一个Java Application程序,使该程序运行后输出字符串“Nothing is too difficult if you put your head into it .”。

2.编写一个具有交互功能的Java Application程序,提示从键盘输入应付金额和实付金额后,计算并输出找零或欠付金额。

3.编写一个Java Applet程序,使该程序运行后输出字符串“Don’t put off till tomorrow what should be done today.”。

第2章Java语言基础

习题二

一、填空题

1.已知:int a =8,b=6; 则:表达式++a-b++的值为( 3 )。

2.已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为(false )。

3.已知:double x=8.5,y=5.8; 则:表达式x++>y--值为(true )。

4.已知:int a[ ]={2,4,6,8}; 则:表达式(a[0]+=a[1])+ ++a[2]值为(13 )。

5.执行int x, a = 2, b = 3, c = 4; x = ++a + b++ + c++; 结果是(x=10,a=3,b=4,c=5 )。6.Java中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。

7.在Java中,字符串和数组是作为(对象)出现的。

8.执行下列程序代码的输出结果是(10,11,11 )。

int a = 10; int i, j; i = ++a; j = a--;

System.out.printf("%d,%d,%d", a, i, j);

9.执行完boolean x=false; boolean y=true; boolean z=(x&&y)&&(!y) ; int f=z==false?1:2;

这段代码后,z与f的值分别是(false )和( 1 )。

二、选择题

1.下面哪些标识符在Java语言中是合法的?(AB )

A.persons$ B.TwoUsers C.*point D.instanceof F.end-line

2.下列( D )是合法标识符。

A.2end B.-hello C.=AB D.整型变量

3.已知int i = 2 147 483 647; ++i; 则i的值等于( A )。

A.- 2 147 483 648 B.2 147 483 647 C.2 147 483 648 D.-1

4.若x = 5,y = 8,则表达式x|y的值为( B )。

A.3 B.13 C.0 D.5

5.若定义有变量float f1,f2 = 8.0F,则下列说法正确的是( B )。

A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0

C.变量f1,f2均未被初始化D.变量f2没有被初始化,f1被初始化为8.0

6.基本数据类型short的取值范围是( B )。

A.(-256)~ 255 B.(-32 768)~ 32 767 C.(-128)~ 127 D.0~65 535

7.下列( B )是不能通过编译的语句。

A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =45.0f;

8.若定义有short s; byte b; char c; 则表达式s * b + c的类型为( C )。

A.char B.short C.int D.byte

9.下列循环语句的循环次数是( B )。

int i=5;

do { System.out.println(i--);

i--;

}while(i!=0);

A.5 B.无限C.0 D.1

10.下列代码哪几行会出错?( C )

1) public void modify() {

2) int I, j, k;

3) I = 100;

4) while (I > 0) {

5) j = I * 2;

6) System.out.println(" The value of j is " + j);

7) k = k + 1;

8) I--;

9) }

10 }

A.line 4 B.line 6 C.line 7 D.line 8

11.下列关于数组的定义形式,哪些是错误的?(ABC )

A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ];

C.int[ ]a; a=new int; D.char b[ ]; b=new char[80];

12.执行String[] s=new String[10];语句后,哪些结论是正确的?(BC )

A.s[0] 为未定义B.s.length 为10

C.s[9] 为null D.s[10] 为""

13.下列关于Java语言的数组描述中,错误的是( D )。

A.数组的长度通常用length表示B.数组下标从0开始

C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界

14.下面的表达式哪些是正确的? (ACE )

A.String s="你好";int i=3; s+=i;

B.String s="你好";int i=3; if(i==s){ s+=i};

C.String s="你好";int i=3; s=i+s;

D.String s="你好";int i=3; s=i+;

E. String s=null; int i=(s!=null)&&(s.length()>0)?s.length():0;

15.下列代表十六进制整数的是( C )。

A.012345 B.2008 C.0xfa08 D.fb05

16.在switch(expression)语句中,expression的数据型不能是( C )。

A.char B.short C.double D.byte

17.下列说法正确的是(AC )。

A.表达式“1+2>3”的值是false B.表达式“1+2||3”是非法的表达式

C.表达式“i+j=1”是非法的表达式D.表达式“1+2>3”的值是true

18.指出正确的表达式( B )。

A.byte=128; B.long l=0xfffL; C.Boolean=null; D.double=0.9239d; 19.public class T18 {

static int arr[] = new int[10];

public static void main(String a[]) {

System.out.println(arr[1]);

}

}

哪个语句是正确的?( C )

A.编译时将产生错误B.编译时正确,运行时将产生错误

C.输出零D.输出空

20.若String s = "hello"; String t = "hello"; char c[] = {'h','e','l','l','o'} ; 则下列哪些表达式返回true?(AB )

A.s.equals(t); B.t.equals(new String("hello"));

C.t.equals(c); D.s==t;

21.执行下面的代码段:

switch(m){ case 0: System.out.println("case 0");

case 1: System.out.println("case 1"); break;

case 2:

default: System.out.println("default");

}

下列m的哪些值将引起"default"的输出?(CD )

A.0 B.1 C.2 D.3

22.下列关于“<<”和“>>”的运算,哪些是正确的?(AC )

A.0000 0100 0000 0000 0000 0000 0000 0000<<5 的运行结果是

1000 0000 0000 0000 0000 0000 0000 0000

B.0000 0100 0000 0000 0000 0000 0000 0000<<5的运行结果是

1111 1100 0000 0000 0000 0000 0000 0000

C.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是

1111 1110 0000 0000 0000 0000 0000 0000

D.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是

0000 0110 0000 0000 0000 0000 0000 0000

三、判断题

1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。(×)

2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(√)3.所有的变量在使用前都必须进行初始化。(×)

4.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。(√)

5.String str="abcdefghi"; char chr=str.charAt(9); (×)

6.char[] chrArray={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'}; char chr=chrArray[6]; (√)

7.int i,j; boolean booleanValue=(i==j); (×)

8.int intArray[]={0,2,4,6,8}; int length=int Array.length();(×)

9.String str="abcedf"; int length=str.length; (×)

10.short shortValue=220; byte byteValue=shortV alue; (×)

11.int[] intArray[60]; (×)

12.char[] str="abcdefgh"; (×)

13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。(√)

14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。(√)四、分析题

1.分析下面的程序,写出运行结果。

public class Exercises5_1 {

String str = new String("Hi !");

char[] ch = { 'L', 'i', 'k', 'e' };

public static void main(String args[]) {

Exercises5_1 ex = new Exercises5_1();

ex.change(ex.str, ex.ch);

System.out.print(ex.str + " ");

System.out.print(ex.ch);

}

public void change(String str, char ch[]) {

str = "How are you";

ch[1] = 'u';

}

}

运行结果是:(Hi ! Luke )

2.分析下面的程序,写出运行结果。

public class Exercises5_2 {

public static void main(String[] args) {

int n = 1, m, j, i;

for (i = 3; i <= 30; i += 2) {

m = (int) Math.sqrt((double) i);

for (j = 2; j <= m; j++)

if ((i % j) == 0)

break;

if (j >= m + 1) {

System.out.print(i + " ");

if (n % 5 == 0)

System.out.print("\n");

n++;

}

}

}

}

运行结果是:()

3 5 7 11 13

17 19 23 29

3.分析下面的程序,写出运行结果:

public class Exercises5_3 {

public static void main(String args[]) {

String str1 = new String();

String str2 = new String("String 2");

char chars[] = { 'a', ' ', 's', 't', 'r', 'i', 'n', 'g' };

String str3 = new String(chars);

String str4 = new String(chars, 2, 6);

byte bytes[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };

String str5 = new String(bytes);

StringBuffer strb = new StringBuffer(str3);

System.out.println("The String str1 is " + str1);

System.out.println("The String str2 is " + str2);

System.out.println("The String str3 is " + str3);

System.out.println("The String str4 is " + str4);

System.out.println("The String str5 is " + str5);

System.out.println("The String strb is " + strb);

}

}

运行结果是:()

The String str1 is

The String str2 is String 2

The String str3 is a string

The String str4 is string

The String str5 is 0123456789

The String strb is a string

五、改错题

1.找出下面代码的错误部分,说明错误类型及原因,并更正。public int m1 (int number[20]){

number = new int[20];

for(int i=0;i

number[i] = number[i-1] + number[i+1];

return number;

}

改正后程序:

public int[] m1(int number[]) {

// number = new int[20];

for (int i = 1; i < number.length - 1; i++)

number[i] = number[i - 1] + number[i + 1];

return number;

}

2.找出下面代码的错误部分,说明错误类型及原因,并更正。

(1) int x = 1;

while (x <= 10);

{ i++; }

改正后程序:

int x = 1, i = 0;

while (x <= 10)

{

i++;

}

(2) switch (n) {

case 1: system.out.println(""The name is 1");

case 2: system.out.println(""The name is 2");

break;

}

改正后程序:

int n = 1;

switch (n) {

case 1:

System.out.println("The name is 1");

break;

case 2:

System.out.println("The name is 2");

break;

}

六、简答题

1.Java的关键字有哪些?

2.标识符有何用途?Java中定义标识符的规则有哪些?

3.Java定义了哪些基本数据类型?基本数据类型和引用数据类型的特点是什么?字节型和字符型数据有何区别?长度为32位的基本数据类型有哪些?

4.整型常量有哪三种表示形式?浮点型变量有哪两种表示形式?布尔型常量可以转换成其他数据类型吗?

5.在Java 语言中,表示字符串常量和字符常量时应注意哪些问题?

6.在Java转义字符表示中,ASCII码值对应的字符如何表示?Unicode字符集中对应的字符如何表示?

7.什么是表达式语句?什么是空语句?什么是块语句?可以把块语句视为一条语种吗?8.if语句中,<条件表达式>一定是逻辑型表达式吗? switch语句中,<语句序列>里一定有break语句吗?

9.while循环语句与do-while循环语句有何不同?

10.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么?

11.break语句和continue语句有哪两种形式?

12.创建数组元素为基本数据类型的数组时,系统都会指定默认值吗?布尔型的默认值是什么?

13.在Java中怎样定义和使用一维数组、二维数组?

14.字符串类String 和StringBuffer类有何不同?

15.Java中的数组实际上是一个隐含的“数组类”的对象,而数组名实际上是该对象的一个引用,这种说法对吗?

16.字符数组与字符串有本质的不同,而字符串实际上是String类和StringBuffer类的对象,这种说法对吗?

七、编程题

1.编写一个程序,求1!+2!+…+10!的值。

2.编程求100以内的全部素数。

3.使用异或运算符“^”实现两个整数的交换。

4.编写一个程序,打印输出下列5×5螺旋方阵:

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

5.给出任意两个日期,编程计算它们相距的天数。

6.编程输出下列图形:

*

***

*****

***

*

7.编程验证哥德巴赫猜想,即任何大于6的偶数可以表示为两素数之和,如10=3+7。8.百鸡百钱问题,公鸡每只3元,母鸡每只5元,小鸡3只1元,用100元钱买100只鸡,公鸡、母鸡和小鸡各买多少?

9.编写一个程序,利用数组把10个数用直接交换方法从小到大排序。

10.编写一个程序,用选择法对数组a[]={9, 5, 3, 12, 22, 35, 88, 11, 90, 1}进行由小到大的排序。

11.找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有)。12.编写一个程序,打印输出10行杨辉三角形。

13.编写一个程序,实现字符串的大小写字母的相互转换。

14.编写一个程序,找出两个字符串中所有相同的字符。

15.编写一个程序,对字符串数组按字典序重新排列。

16.编写一个程序,分析输出字符串中的单词,并统计单词个数。

17.编写一个程序,将字符串“.ymene tsrow sih si nam yrevE”反转。

第3章Java语言面向对象基础

习题三

一、填空题

1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。

2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。

3.模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。4.UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。

5.在UML类图中分别用(+ )、(# )、(~ )和(- )表示属性与方法的公有、保护、默认和私有访问控制权限。

6.在UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。7.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。

8.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。9.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。

10.对象作方法形参时,方法实参也用对象,实现(引用)调用。

11.(new)是一个特殊的方法,用于创建一个类的实例。

12.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。

13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。

14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。15.Java使用固定于首行的(package)语句来创建包。

16.在运行时,由java解释器自动引入,而不用import语句引入的包是(https://www.wendangku.net/doc/e03922404.html,ng)。17.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。

二、简答题

1.名词解释:OO、OOSE、OOA、OOD、OOP;抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML、类图、对象图、用例图、顺序图、协作图、状态图、活动图、包图、构件/组件图、部署图。

2.简述面向对象的基本思想、主要特征和基本要素。

3.为什么要对类进行封装?封装的原则是什么?

4.类的封装性、继承性和多态性各自的内涵是什么?

5.简述依赖、关联和聚集的区别。

6.什么是对象?什么是类?二者有何关系?

7.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么?8.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符?

9.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符?

10.简述构造方法的特点与作用。

11.Java中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值?

12.什么是类变量(静态变量)?什么是实例变量?它们的存储特性、访问方法、主要区别是什么?

13.什么是类方法(静态方法)?什么是实例方法?它们的存储特性、访问方法、主要区别是什么?

14.什么是包?如何创建包?如何引用包?

15.Import语句和package语句的功能分别是什么?

16.举例说明JAR包的创建、加载与运行方法。

三、选择题

1.下面关于封装性的描述中,错误的是(D )。

A.封装体包含属性和行为B.被封装的某些信息在外不可见

C.封装提高了可重用性D.封装体中的属性和行为的访问权限相同

2.下面关于类方法的描述,错误的是(B )。

A.说明类方法使用关键字static B.类方法和实例方法一样均占用对象的内存空间C.类方法能用实例和类名调用D.类方法只能处理类变量或调用类方法

3.下面关于包的描述中,错误的是(A )。

A.包是若干对象的集合B.使用package语句创建包

C.使用import语句引入包D.包分为有名包和无名包两种

4.下述哪些说法是正确的?(BC )

A.用static关键字声明实例变量B.实例变量是类的成员变量

C.局部变量在方法执行时创建D.局部变量在使用之前必须初始化

5.下面哪些代码段是正确的Java源程序?(BCD )

A.import java.io.*; B.import java.io.*;

package testpackage; class Person{/* do something... */}

public class Test{/* do something... */} public class Test{/* do something... */} C.import java.io.*; D.package testpackage;

import java.awt.*; public class Test{/* do something... */}

public class Test{/* do something... */}

四、判断题

1.类是一种类型,也是对象的模板。(√)

2.类中说明的方法可以定义在类体外。(×)

3.实例方法中不能引用类变量。(×)

4.创建对象时系统将调用适当的构造方法给对象初始化。(√)

5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。(√)

6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。(√)7.对象可作方法参数,对象数组不能作方法参数。(×)

8.class是定义类的惟一关键字。(√)

9.Java语言会自动回收内存中的垃圾。(√)

五、分析题

分析下面的程序,写出运行结果。

import java.awt.*;

import java.applet.*;

class MemberVar {

static int sn = 30;

final int fn;

final int fk = 40;

MemberVar() {

fn = ++sn;

}

}

public class Exercises5_1 extends Applet {

public void paint(Graphics g) {

MemberVar obj1 = new MemberVar();

MemberVar obj2 = new MemberVar();

g.drawString("obj1.fn=" + obj1.fn, 20, 30);

g.drawString("obj1.fk=" + obj1.fk, 20, 50);

g.drawString("obj2.fn=" + obj2.fn, 20, 70);

g.drawString("obj2.fk=" + obj2.fk, 20, 90);

}

}

运行结果是:()

obj1.fn=31

obj1.fk=40

obj2.fn=32

obj2.fk=40

六、改错题

1.下面的程序中有若干个语法错误,找出后请改正。

public class MyMainClass{

public static void main( ) {

TheOtherClass obj = new TheOtherClass("John Smith","Male","UK"); System.out.println(https://www.wendangku.net/doc/e03922404.html,+' '+obj.gender+' '+obj.nationality);

}

System.out.println("The end of the program! ")

}

public class TheOtherClass{

private String name,gender,nationality;

public TheOtherClass(String name,String gender,String nationality) {

https://www.wendangku.net/doc/e03922404.html,=name;

this.gender=gender;

this.nationality=nationality;

}

}

改正后程序:

public class MyMainClass {

public static void main(String args[]) {

TheOtherClass obj = new TheOtherClass("John Smith", "Male", "UK"); System.out.println(https://www.wendangku.net/doc/e03922404.html, + ' ' + obj.gender + ' ' + obj.nationality);

System.out.println("The end of the program! ");

}

}

class TheOtherClass {

public String name, gender, nationality;

public TheOtherClass(String name, String gender, String nationality) {

https://www.wendangku.net/doc/e03922404.html, = name;

this.gender = gender;

this.nationality = nationality;

}

}

2.下面的程序中有若干个语法错误,找出后请改正。

public class Car{

private String carName;

public int mileage;

private static final int TOP_SPEED=50;

abstract void alert();

public static int getTopSpeed(){

return TOP_SPEED;

}

public static void setCarName(){

carName="Bensi";

}

public static void setMileage(){

mileage=180;

}

}

改正后程序:

public abstract class Car {

private String carName;

public int mileage;

private static final int TOP_SPEED = 50;

abstract void alert();

public static int getTopSpeed() {

return TOP_SPEED;

}

public void setCarName() {

carName = "Bensi";

}

public void setMileage() {

mileage = 180;

}

}

七、编程题

1.设计(用UML的类图表示)并实现一点类Point,该类的构成包括点的x和y两个坐标,其构造方法、设置和修改坐标、求解两点距离的方法等,编写应用程序生成该类的对象并对其进行操作。

2.设计(用UML的类图表示)并实现一个矩形类Rectangle,包括其构造方法、求解矩形面积和周长的方法等,实例化后输出相应的信息。

3.计算出Fibonacci数列的前n项,Fibonacci数列的第一项和第二项都是1,从第三项开始,每项的值都是该项的前两项之和。即:

F(n) = F (n-1) + F(n-2) n≥3

F(1) = F(2) = 1 n=1,2

4.参照“图3-4”实现Student类的定义,然后生成该类的对象后进行相关操作。

第4章Java语言面向对象高级程序设计

习题四

一、填空题

1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。

2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。

3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。

4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类与非子类)的代码访问引用。

5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。

6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。

9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。

10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。

11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。

12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。

14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。

15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。

16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。

17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。

18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。

19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。

20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。

22.一个接口可以通过关键字extends来继承(多个)其他接口。

23.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。

24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。

25.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法

( );)。

26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。

27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。

二、简答题

1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?

2.如何创建一个类的子类?

3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?

4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?

5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?

6.什么是成员变量的继承?什么是成员变量的覆盖?

7.举例说明什么是上转型对象,上转型对象的操作原则是什么?

8.简述接口定义的一般格式。

9.什么是接口?如何定义接口?接口与类有何区别?

10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?11.比较接口与抽象类的异同。

12.什么是抽象类?什么是抽象方法?各自有什么特点?

13.什么是最终类?什么是最终变量?什么是最终方法?

14.简述内部类的类型。

15.简述在外部类的内部与外部对实例成员类实例化的方法。

16.简述定义语句匿名类和参数匿名的一般格式。

17.什么是适配器模式?什么是装饰模式?

三、选择题

1.下面关于类的继承性的描述中,错误的是(C )。

A.继承是在已有的基础上生成新类的一种方法

B.Java语言要求一个子类只有一个父类

C.父类中成员的访问权限在子类中将被改变

D.子类继承父类的所有成员,但不包括私有的成员方法

2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(B )。

A.默认B.protected C.private D.public

3.在类的修饰符中,规定只能被同一包类所使用的修饰符是(B )。

A.public B.默认C.final D.abstract

4.下列关于子类继承父类的成员描述中,错误的是(C )。

A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。

B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。

C.子类中继承父类中的所有成员都可以访问。

D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子

类执行自己的操作中,使用自己定义的变量。

5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?(AB )

A.public class MyClass extends Object B.public class MyClass

C.private class MyClass extends Object D.class MyClass extends Object 6.下列关于继承性的描述中,错误的是(C )。

A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员

7.下列关于抽象类的描述中,错误的是(C )。

A.抽象类是用修饰符abstract说明的B.抽象类是不可以定义对象的

C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类

8.设有如下类的定义:

public class parent {

int change() {}

}

class Child extends Parent { }

则,下面哪些方法可加入Child类中?(AB )

A.public int change(){ } B.int chang(int i){ }

C.private int change(){ } D.abstract int chang(){ }

9.下列关于构造方法的叙述中,错误的是(D )。

A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明

C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承

10.下面叙述中,错误的是(C )。

A.子类继承父类B.子类能替代父类C.父类包含子类D.父类不能替代子类11.下列对多态性的描述中,错误的是(B )。

A.Java语言允许方法重载与方法覆盖B.Java语言允许运算符重载

C.Java语言允许变量覆盖D.多态性提高了程序的抽象性和简洁性12.下面关于接口的描述中,错误的是(A )。

A.一个类只允许继承一个接口B.定义接口使用的关键字是interface

C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现

D.接口实际上是由常量和抽象方法构成的特殊类

13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(C )A.ArrayList myList=new Object(); B.ArrayList myList=new List();

C.List myList=new ArrayList(); D.List myList=new List();

14.下列哪些方法与方法public void add(int a){}为合理的重载方法?(ACD )A.public void add(char a) B.public int add(int a)

C.public void add(int a,int b) D.public void add(float a)

15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(C )。A.public int MAX_LENGTH=100; B.final public int MAX_LENGTH=100; C.public final int MAX_LENGTH=100; D.final int MAX_LENGTH=100;

四、判断题

1.Java语言中,构造方法是不可以继承的。(√)

2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。(×)

3.抽象方法是一种只有说明而无具体实现的方法。(√)4.Java语言中,所创建的子类都应有一个父类。(√)

5.调用this 或super构造方法的语句必须放在第一条语句。(√)6.一个类可以实现多个接口,接口可以实现“多重继承”。(√)7.实现接口的类不能是抽象类。(√)

8.使用构造方法只能给实例成员变量赋初值。(√)

9.Java 语言不允许同时继承一个类并实现一个接口。(×)

五、分析题

1.分析下面的程序,写出运行结果。

public class Exercises6_1 extends TT{

public void main(String args[]){

Exercises6_1 t = new Exercises6_1("Tom");

}

public Exercises6_1(String s){

super(s);

System.out.println("How do you do?");

}

public Exercises6_1(){

this("I am Tom");

}

}

class TT{

public TT(){

System.out.println("What a pleasure!");

}

public TT(String s){

this();

System.out.println("I am "+s);

}

}

运行结果是:()

What a pleasure!

I am Tom

How do you do?

2.分析下面的程序,写出运行结果。

public class Exercises6_2 {

private static int count;

private String name;

public class Student {

private int count;

private String name;

public void Output(int count) {

count++;

this.count++;

Exercises6_2.count++;

Exercises6_2.this.count++;

System.out.println(count + " " + this.count + " "

+ Exercises6_2.count + " " + Exercises6_2.this.count++);

}

}

public Student aStu() {

return new Student();

}

public static void main(String args[]) {

Exercises6_2 g3 = new Exercises6_2();

g3.count = 10;

Exercises6_2.Student s1 = g3.aStu();

s1.Output(5);

}

}

运行结果是:()

6 1 12 12

3.分析下面的程序,写出运行结果。

class Exercises6_3 {

class Dog {

private String name;

private int age;

public int step;

Dog(String s, int a) {

name = s;

age = a;

step = 0;

}

public void run(Dog fast) {

fast.step++;

}

}

public static void main(String args[]) {

Exercises6_3 a = new Exercises6_3();

Dog d = a.new Dog("Tom", 3);

d.step = 29;

d.run(d);

System.out.println(" " + d.step);

}

}

运行结果是:()

30

4.分析下面的程序,写出运行结果。

class Aclass { void go() { System.out.println("Aclass"); } }

public class Bclass extends Aclass {

void go() { System.out.println("Bclass"); }

public static void main(String args[]) {

Aclass a = new Aclass();

Aclass a1 = new Bclass();

a.go();

a1.go();

} }

运行结果是:()

Aclass

Bclass

六、改错题

1.找出下面代码的错误部分,说明错误类型及原因,并更正之。

public class Car {

private String carName;

public int mileage;

private static final int TOP_SPEED = 200;

abstract void alert();

public static int getTopSpeed() {

return TOP_SPEED;

}

public static void setCarName() {

carName = "奥迪";

}

public static void setMileage() {

mileage = 180;

}

}

错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。更正:

public abstract class Car {

private String carName;

public int mileage;

private static final int TOP_SPEED = 200;

abstract void alert();

public static int getTopSpeed() {

return TOP_SPEED;

}

public void setCarName() {

carName = "奥迪";

}

public void setMileage() {

mileage = 180;

}

}

2.下列代码不能编译的原因是:()。

class A {

private int x;

public static void main(String args[]) { new B(); }

class B { B() {System.out.println(x); }

}

}

因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。

更正如下:

public class A {

private int x;

public static void main(String args[]) {

A a = new A();

a.new B();

}

class B {

B() {

System.out.println(x);

}

}

}

七、编程题

1.先在一个包中编写第一个类ClassA,要求该类中具有四种不同访问权限的成员,再在另一个包中编写第二个类ClassB,并在该类中编写一个方法以访问第一个类中的成员。总结类成员访问控制的基本规则。

2.设计一个汽车类Car,实现构造方法的重载,然后利用这些构造方法,实例化不同的对象,输出相应的信息。

3.设计一个乘法类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。然后以Java Applet程序方式调用这三个同名的方法mul,输出其测试结果。

4.已知编一个抽象类AbstractShape如下所示:

Java程序设计实例教程考试题

Java程序设计练习题 一、选择题 1、为使Java程序独立于平台,Java虚拟机把字节码与各个操作系统及硬件( A ) A)分开B)结合 C)联系D)融合 2、Java语言与C++语言相比,最突出的特点是( C ) A)面向对象B)高性能 C)跨平台D)有类库 3、下列Java源程序结构中前三种语句的次序,正确的是(D) A)import,package,public class B)import必为首,其他不限 C)public class,package,import D),import,public class 4、在JDK目录中,Java程序运行环境的根目录是( A ) A)bin B)demo C)lib D)jre 5、下列运算符中属于关系运算符的是(A ) A)== B).= C)+= D)-= 6、下列布尔变量定义中,正确并且规范的是( B ) A)BOOLEAN canceled=false; B)boolean canceled=false; C)boolean CANCELED=false; D)boolean canceled=FALSE; 7、下列关键字中可以表示常量的是( A ) A)final B)default C)private D)transient 8、下列运算符中,优先级最高的是( A ) A)++ B)+ C)* D)> 9、Java中的基本数据类型int在不同的操作系统平台的字长是( B ) A)不同的B)32位 C)64位D)16位

10、给一个short类型变量赋值的范围是( C ) A)-128 至 +127 B)-2147483648至 +2147483647 C)-32768至 +32767 D)-1000至 +1000 11、下列运算中属于跳转语句的是( D ) A)try B)catch C)finally D)break 12、switch语句中表达式(expression)的值不允许用的类型是( C ) A)byte B)int C)boolean D)char 13、下列语句中,可以作为无限循环语句的是( A ) A)for(;;) {} B)for(int i=0; i<10000;i++) {} C)while(false) {} D)do {} while(false) 14、下列语句中执行跳转功能的语句是( C ) A)for语句B)while语句 C)continue语句D)switch语句 15、下列表达式中,类型可以作为int型的是( C ) A)“abc”+”efg”B)“abc”+’efg’ C)‘a’+’b’D)3+”4” 17、数组中各个元素的数据类型是( A ) A)相同的B)不同的 C)部分相同的D)任意的 18、在Java语言中,被成为内存分配的运算符是( A ) A)new B)instance of C)[] D)() 19、接口中,除了抽象方法之外,还可以含有( B ) A)变量B)常量 C)成员方法D)构造方法 20、下列能表示字符串s1长度的是( A ) A)s1.length()B)s1.length C)s1.size D)s1.size() 21、StringBuffer类字符串对象的长度是( C ) A)固定B)必须小于16个字符 C)可变D)必须大于16个字符 22、构造方法名必须与______相同,它没有返回值,用户不能直接调用它,只能通过new调用。( A ) A)类名B)对象名 C)包名D)变量名 23、子类继承了父类的方法和状态,在子类中可以进行的操作是( D ) A)更换父类方法B)减少父类方法 C)减少父类变量D)添加方法 24、String、StingBuffer都是______类,都不能被继承。( C )

Java语言程序设计基础教程习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章 Java程序设计概述 练习思考题 1、 Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、 Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、 public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

java程序设计基础(含参考答案)

“Java程序设计基础”课程习题 一、填空 1.Java程序分两类___Applet___和application,Java Application 类型的程序,程序从 ___main方法___开始执行。 2.定义一个Java类时,通过关键字__extends____指明该类的父类。一个类可以有___1___ 个父类。 3.用public修饰的类称为_公有类或公用类__。用public修饰的类成员称为公有成员。被 说明为public的内容可以被__所有其他类___ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过__import____语句引入。 4.用___private___ 修饰的类成员称为私有成员。私有成员只能在__本类__ 中使用。 5.如果子类定义的成员变量与父类的成员变量同名,称为___方法覆盖___ ,要表明使用 子类的成员变量,可以在成员变量前加上关键字__super___ 。 6.____Object__ 类是Java类库中所有类的父类。 7.Java字符使用__16位的字符集,该字符集成为__Unicode____ 。 8.当子类中定义的方法与父类方法同名时,称子类方法___覆盖___ 父类方法,子类默认 使用自己的方法。使用父类的同名方法,必须用关键字__super__ 说明。 9.Java源程序文件名的后缀是___.java___,Java字节码文件名的后缀是_.class_____。 10.Java类名的第一个字母通常要求___大写___。 11.Java程序由____类__组成,每个程序有一个主类,Java程序文件名应与____主__类的 名称相同。 12.Java__Application_类型的程序需要main()方法,程序从__main____开始执行。 13.布尔型数据类型的关键字是_boolean__ ,占用位数是___1位___ ,有__true__ 和_false_ 两种值。整型数可以采用_十_ 、__八_ 和__十六_三种进制表示。 14.八进制整数以数字__0_开头。十六进制整数以_0x或0X_ 开头。 15.int整型数占用__32位内存。long整型数占用__64 位内存。 16.127L表示__长整型____ 常量。 17.根据占用内存长度将浮点常量分为_double_____ 和__float____ 两种。 18.单精度浮点常量占用__32_ 位内存,双精度浮点常量占用__64 位内存。 19.在Java语言中,字符串“ABC\tD\b\n”中包括__7个字符。 20.数学关系44&&x<9____ 。数学关系x>3且x<=10对应 的Java表达式是_x>3&&x<=10。数学关系x>3或x<-10对应的Java表达式是_x>3||x<-10_。 21.逻辑表达式true&&false&&true的结果是_false_ 。 22.__new__ 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会 自动调用类中的构造方法为对象_初始化_。 23.省略访问修饰符的类只能被同_一包_中的类使用,称之具有包访问特性。 24.用public修饰的类称为_公共类_。用public修饰的类成员称为公共成员。被说明为public 的内容可以被_所有类_ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过_import_语句引入。 25.用_private_ 修饰的类成员称为私有成员。私有成员只能在_本类使用。 26.在类中可以定义多个具有相同名称、但参数不同的方法,这种做法称为__方法重载_ 。 27.如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在 成员变量前加上关键字__this__。

Java程序设计习题附答案(一)

Java程序设计题库 第一部分绪论 1、下列关于Java语言的特点,描述错误的是(C) A.Java是跨平台的编程语言B.Java支持分布式计算 C.Java是面向过程的编程语言D.Java支持多线程 2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?(B) A、安全性 B、多线性 C、跨平台 D、可移植 3、Java JDK中调试器的命令是(C)。 A、javac B、java C、jdb D、avah 4、运行jar文件中class文件需要在java命令后面加的参数为(A)。 A、-cp B-g C-d D-verbose 5、下面哪项在java中是不合法的标识符?(C) A、$user B、point C、You&me D、_endline 6、下面关于Java语言说法正确的是(ABCD)。 A、Java语言是面向对象的、解释执行的网络编程语言。 B、Java语言具有可移植性,是与平台无关的编程语言。 C、Java语言可对内存垃圾自动收集。 D、Java语言编写的程序虽然是“一次编译,到处运行”,但必须要有Java的运行环境。 7、在Java程序设计中,程序员创建()文件,然后编译器把它们转化为()文件。( B) A、源, HTML B、源, 字节代码 C、字节代码, 源 D、HTML, 字节代码 8、Java的JVM是指(B)。 A、由Java操作的家用设备(通常是一个漂亮的小烤箱) B、Java字节代码的解释程序 C、Java源代码的编译器 D、运行Java 所需的硬件设备 9、在Java中,关于CLASSPA TH环境变量的说法不正确的是(A)。 A、CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B、编译器用它来搜索各自的类文件。 C、CLASSPATH是一个目录列表。 D、解释器用它来搜索各自的类文件。 10、一个可以独立运行的Java应用程序(D)。

Java程序设计实用教程_习题解答

习题 1 1.James Gosling 2.需3个步骤: 1)用文本编辑器编写源文件 2)使用Java编译器(javac.exe)编译源文件,得到字节码文件。 3)使用java解释器(java.exe)来解释执行字节码文件。 3.D:\JDK 1) 设置path 对于Windows 2000/2003/XP,右键单击“我的电脑”,在弹出的快捷菜单中选择“属性”,弹出“系统特性”对话框,再单击该对话框中的“高级选项”,然后单击“环境变量”按钮,添加系统环境变量path。如果曾经设置过环境变量path,可单击该变量进行编辑操作,将需要的值d:\jdk\bin加入即可(注意:修改系统环境变量path后要重新打开DOS窗口编译)。或在DOS窗口输入命令行: set path=d:\jdk\bin(注意:用此方法修改环境变量每次打开DOS窗口都需要输入该命令行重新进行设置)。 2) 设置classpath 对于Windows 2000/2003/XP,右键单击“我的电脑”,在弹出的快捷菜单中选择“属性”,弹出“系统特性”对话框,再单击该对话框中的“高级选项”,然后单击“环境变量”按钮,添加系统环境变量classpath。如果曾经设置过环境变量classpath,可单击该变量进行编辑操作,将需要的值d:\jdk\jre\lib\rt.jar;.;加入即可。或在DOS窗口输入命令行: set classpath= d:\jdk\jre\lib\rt.jar;.;。 4.(B)javac 5.Java源文件的扩展名是”.java”,Java字节码的扩展名是”.class” 6.Java应用程序主类的main申明(D)public static void main(String args[])

java编程题全集题及答案

J a v a程序设计总复习题 1、编写一个Java程序,用if-else语句判断某年份是否为闰年。(分支) // Programme Name LeapYear.java public class LeapYear{ public static void main(String args[]){ int year=2010; if(args.length!=0) year=Integer.parseInt(args[0]); if((year%4==0 && year%100!=0)||(year%400==0)) 年是闰年。"); else 年不是闰年。"); } }//if-else语句 2、编写一个Java程序在屏幕上输出1!+2!+3!+……+10!的和。(循 环) // programme name ForTest.java public class ForTest { public static void main( String args[] ) { int i,j,mul,sum=0; for(i=1;i<=10;i++) { mul=1; for(j=1,j<=i;j++) { mul=mul*j; } sum=sum+mul; } “1!+2!+3!+……+10!= ”+sum); } } 3、依次输入10个学生成绩,判断学生(优秀、良好、中等、及格、不及格) 并计算人数(switch) 4、使用冒泡排序(数组) public class BubbleSort { public static void main(String[] args) {

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application得入口方法main()得检验: main()方法得参数名就是否可以改变? main()方法得参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法得参数名可以改变.(2)main()方法得参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗? 参考答案:当一个程序没有main()方法就是,就是可以编译通过得,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? bytei =127; bytej = 128; longl1 = 999999; long l2= 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与longl2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 =3、5; float f2 = 3.5f; 参考答案:java中浮点型得数据在不声明得情况下都就是double型得,如果要表示一个数据就是float型得,必须在数据后面加上“F”或“f”;因此,floatf1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型得,但就是int类型无法转换为char类型得;(2)int 可以转换为double类型得,但就是double类型无法转换为int 类型得。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1)4+5 == 6*2 ?(2) (4=5)/6?? (3)9%2*7/3>17(4)(4+5)<=6/3 ? (5) 4+5%3!=7-2????(6)4+5/6〉=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法得. 7、下列()就是合法得Java标识符。 (1)Counter1 ??(2)$index, (3) name-7 ??(4)_byte

Java程序设计-习题参考答案

参考答案 第1章 3、计算机系统由哪两部分组成的?计算机硬件结构由哪几部分组成?它们各自有什么作用? 一台计算机由硬件和软件组成。一台典型的计算机由五大部分组成。这五大部分是:运算器,控制器,存储器,输入设备和输出设备。 运算器是执行算术运算和逻辑运算的部件。 控制器是向计算机其他部分发送命令的部件。 存储器是计算机用来存储数据、信息的部件。 输入设备就是外界向计算机输入信息设备。 输出设备恰好与输入设备的作用相反,它将处理过后的信息输出呈现给用户。 9、将以下十进制数转换为对应的二进制数 (1)32 (2)97 (3)256 (4)500 (1)100000 (2)1100001 (3)100000000 (4)111110100 第2章 1.Java语言有哪些主要特点。 平台独立性 安全性 多线程 网络化 面向对象 3.Java Application的开发步骤有哪些。 Java Application的开发步骤: (1)下载JDK软件并安装; (2)配置相应的环境变量(path和classpath); (3)编写Java源程序(文本编辑器或集成开发环境IDE); (4)编译Java源程序,得到字节码文件(javac *.java); (5)执行字节码文件(java 字节码文件名)。

4.什么是环境变量,设置环境变量的主要目的是什么。 环境变量的配置主要是为了进行“寻径”,也即让程序能找到它需要的文件,所以设置的内容就是一些路径。 第3章 1.Java语言对于合法标识符的规定是什么?指出以下哪些为合法标识符。 a a2 3a *a _a $a int a% 在Java语言中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。另外,Java语言对标识符的有效字符个数不做限定。 合法的标识符: a a2 _a $a 5.数据类型强制转换的原则是什么?如何转换? 对于变窄转换,如long到short、double到float,或者不兼容转换:float到short、char 到short等,则需要进行强制转换。 float f = 11.5; short b ; b = (short)f; (强制转换) 第4章 5.用穷举法求出3位数中百、十、个位数的立方和就是该数的数。 public class Test { public static void main(String[] args) { int a,b,c,x=100; while(x<1000){ a=x%10; b=(x%100-a)/10; c=(x-x%100)/100; if(a*a*a+b*b*b+c*c*c==x) System.out.println(x); x+=1;

JavaWeb程序设计教程课后练习答案

第1章 Web应用开发简介 习题答案 1.Web在组成上包括______和______两部分。 答案: 服务器 客户端 2.谈谈对面向对象的认识。 答案: 面向对象将将要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙解决问题中的各个步骤中的行为。面向对象编程方式是建立在面向过程编程方式基础上,其最重要的改变在于面向对象编程中,程序将围绕被操作的对象来设计,而不是操作本身。面向对象编程方式以类作为构造程序的基本单位,具有封装、抽象、继承、多态性等特点。 3.介绍几种常用的框架技术。 答案: Java中常用的框架。 1.Struts Struts是Apache 基金会Jakarta 项目组的一个开源项目,是一个基于Sun J2EE平台的MVC框架,它将Servlet和JSP标签作为实现自身功能的一部分。 2.WebWork WebWork是由OpenSymphony组织开发的,是一个基于Web的MVC框架。它在运行时通过Interceptor(拦截器)自动应用,因此脱离了Action类。 3.Struts 2 Struts 2是Apache基金会的一个开源项目,它建立在Struts框架与WebWork框架基础之上,继承了二者的优点,是目前非常流行的一个Web框架。 4.Spring Spring是一个以IoC和AOP为核心的轻量级容器框架。它提供了一系列的Java EE开发解决方案,包括表示层的Spring MVC、持久层的Spring JDBC以及业务层事务管理等众

多的企业级应用技术。 5.Hibernate Hibernate是一个ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装。通过使用Hibernate框架,开发人员能够以面向对象的思维方式来操作数据库。 6.Ibatis 相对于Hibernate而言,Ibatis是一个“半自动化”的ORM实现框架,它主要致力于POJO与SQL之间的映射关系,是对“全自动化”ORM框架的一种有益补充。 7.EasyJWeb EasyJWeb是一个核心基于模板技术实现的MVC框架,主要致力于Java Web应用程序的快速开发。 4.IDE的用途是什么? 答案: IDE是一种用于辅助开发人员开发应用程序的应用软件,它一般包括代码编辑器、编译器、调试器和图形用户界面工具,有的还包括版本控制系统、性能分析器等更多工具,因此IDE也就具有了编写、编译、调试等多种功能。正是基于这些功能,使用IDE能够减少项目的开发周期,减轻程序员的工作量,提高应用程序的开发效率等。 5.Web应用服务器的用途是什么? Web应用服务器是为创建、部署、运行以及管理Web应用提供多种运行时服务(如事务、安全等等)的分布式系统,它是应用程序运行的一个基本环境。

《JAVA程序设计》(含答案)

《JA V A程序设计》练习题 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A)。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A)。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 5、关于选择结构下列哪个说法正确?( B ) A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句 6、while循环和do…while循环的区别是:( D) A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 7、关于for循环和while循环的说法哪个正确?( B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空

《Java程序设计》课后习题参考答案

习题1参考答案 1.Java语言的特点有哪些? 答:参考1.1.2 防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果要求类成员内部的一致性,就应该通过类本身的方法来处理。 这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作,这使代码维护更简单。 2.简述封装的优点。 答:封装是一个简单而有效的思想,优点有:(1)模块化,对内成为一个结构完整、可进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口单一、可在各种适合的环境下都能独立工作的有机单元。 面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。 3.Java的基本工具有哪些? (1)javac 编译器 (2)java 解释器 (3)jdb Java 语言调试器 (4)javadoc API文档管理器 (5)javah 头文件生成器 (6)appletviewer 小应用程序浏览器 (7)javap 类文件反汇编器 4.Java开发环境是如何配置的? 答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]窗口的[变量值]框后加上上面两条语句。 习题2参考答案 1.Java语言包含哪些数据类型? 答:包含基本数据类型和复合数据类型。基本类型包括整数类型、浮点数类型、布尔类型。复合类型包括类类型(Class Type)、接口类型(Interface Type)与数组类型(Array Type)。 2.Java有多少关键字? 答:abstract, continue, for, new, switch,boolean, default, goto*, null, synchronized,break, do, if, package, this,byte, double, implements, private, threadsafe,byvalve*, else, import, protected, throw,case, extends, instanceof, public, transient,catch, false, int, return, true,char, final,

非常经典的JAVA编程题全集(50题及答案)

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3; for(int m=101; m<1000; m++) {

java语言程序设计作业答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系? 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象! 3)两者的关系:对象是类的具体实例.。 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种?具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限制的作用? 答: 类成员的访问控制符有public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). P rivate(保护的):类中限定为private的成员只能被这个类本身访问,在类外不可见。proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点? 答: 构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有); (3)构造方法通常被声明为公有的(public);

Java程序设计与实践教程_王薇主编_答案

第1章JAVA简介 一、判断题 1.√ 2.√ 3.? 4.? 5.? 6.√ 7.√ 8.√ 9.? 10.? 二、填空题 1.Application Applet 2. 类(字节码文件、目标文件) .class 3.对象 4. 主 5. J2SE J2EE J2ME 三、选择题 1.B 2. D 3.B 4.B 5. A 四、简答题 1.参考答案 Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可 移植的、编译解释型的、高性能的、多线程的、动态的等等。 2.参考答案 Java程序执行的具体过程如图1所示。 图1 Java程序的运行机制 3.参考答案 Java程序在计算机在执行要经历以下几个阶段: (1)使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境 (JCreater、Eclipse、MyEclipse等)编辑Java源文件,其文件扩展名为.java。 (2)通过编译使.java的文件生成一个同名的.class文件。 (3)通过解释方式将.class的字节码文件转变为由0和1组成的二进制指令执行。 在以上阶段中可以看出Java程序的执行包括了编译和解释两种方式。 第2章Java 语法基础 一、判断题

1. ? 2.√ 3. ? 4.? 5.? 二、填空题 1.10 2. 单精度双精度 3. n%13 !=0?false:true 4.接口 5. false 三、选择题 1.D 2. C 3.D 4.A 5. C 第3章程序流程控制 一、判断题 1.错误 2.? 3.? 4.? 5.√ 二、填空题 1.循环 2. if 3.case switch 4. while do-while 5. continue 三、选择题 1.D 2. C 3.C 4.B 5. C 第4章数组 一、判断题 1. ? 2. √ 3. √ 4. √ 5.? 二、填空题 1.类型 2. new 3.长度 4. 分配空间 5. 3 6 9 三、选择题 1.D 2. A 3.C 4.B 5. B 第5章类和对象 一、判断题 1.√ 2.√ 3.? 4.? 5.√ 6.? 7.√ 8.? 9.? 10.√ 11.√ 12.√ 13.? 14.? 15. ? 二、填空题 1.public default 2. class 属性方法 3.public static void main(String args[]){} 4. new

大学《java程序设计》考试题库及答案

若有定义int a=2,b=2; 则表达式(a++)+(++b) 的值是( )。 A. 5 监听器接口的方法返回值的类型是()。C. void 在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行()。 D. init() 以下哪个不是Java的原始数据类型() B. Boolean 向Applet传递参数的正确描述是()。C. C. PARAM name="age,value=20" 阅读下列代码; public class Test{ String s="One World One Dream"; public static void main(String args[]){ System.out.println(s); } } 其运行结果是_ C. 编译时出错//除非创建Text类的对象 如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是()。 A. p.add(b,"South"); 编译和运行下面的应用程序,并在命令行界面输入12345 ,则回车后屏幕输出的结果是( )。public class A { public static void main(String args[]) throws IOException{ BufferedReader buf=new BufferedReader( new I nputStreamReader(System.in)); String str=buf.readLine(); int x=Integ er.parseInt(str); System.out.println(x/100); } } B. 123 构造函数何时被调用?() B. 创建对象时 以下哪项可能包含菜单条()。 D. Frame

java语言程序设计课后习题答案解析

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1= =str2); //false String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1= =str2); //false 因此自符串如果是对内容进行比较,使用equals方法比较可靠。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1.equals(str2)); //true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2)); //true 5.编写一个程序,把变量n的初始值设置为1678,然后利用除法运算和取余运算把变量的每位数字都提出来并打印,输出结果为:n=1678。n的每位数字是1,6,7,8。若n为任意值呢? 法一: public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; int count; thousand=n/1000; count=n%1000; hundred=count/100; count=count%100; decimal=count/10; count=count%10; unit=count; System.out.println("1678包含的数 字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } //如果n为任意值 import java.io.*; public class Exercise51{ public static void main(String[] args) throws IOException{ System.out.print("请输入一个整数:"); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int length=input.length()-1; int n=new

java程序设计项目教程第3章答案

一、选择题 参考答案: 1.B 2.A 3.D 4.C 5.A 6.A 7.B 8.B 9.A 10.A 11.A 12.D 二、填空题 参考答案: 1.覆盖 2.参数 3.方法体 4.public static final 5.抽象 6.extends 7.Student String 8.class static 三、简答题 1.子类能够继承父类的哪些成员变量和方法? ①子类可以继承父类的属性,包括实例成员变量和类成员变量。 ②子类可以继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。2.this和super关键字的作用是什么? 使用this关键字可实现调用本类的构造方法及调用被方法隐藏的成员变量。 super关键字可调用父类的构造方法及调用父类的同名成员。 3.什么是方法的重载?什么是方法的覆盖? 方法重载是指同一个类中多个方法享有相同的名字,但是这些方法的参数必须不同,参数不同是,指或者是参数的个数不同,或者是参数类型不同,或者是不同类型参数的排列顺序不同。 类继承的过程中,子类方法跟父类方法名字相同,并且传递的参数完全一样,称子类覆盖了父类的方法。 4.什么是多态?使用多态有什么优点? 多态的表现形式主要有方法的重载和方法的覆盖。 使用多态可根据同名方法的参数不同实现不能的功能或同一类对象根据赋予的引用对象的不同来实现不同的行为。 5.什么是包?定义包的作用是什么? 包是java提供的一种命名空间机制,实现了对类的存放和引用位置的管理,包对应一个文件夹。 java的类库就是用包来实现了类的分类和存放,每个包中都有多组相关的类和接口。6.什么是接口?接口中的变量和方法各有什么要求? 接口是特殊的抽象类,可以想象为一个“纯”抽象类,就是一组具有特定意义的静态常量和抽象方法的集合。 属性定义时必须赋初值,是常量。属性性前修饰符时默认该属性由final、static修饰。 接口中的方法必须是抽象方法。 7.类BB是AA类的子类。类AA和类BB中都定义了变量x和method()方法,这种情况称为子类隐藏了父类的同名变量x并覆盖了父类的method()方法. 8.输出结果为: AA BB 若将main()方法中的语句改为:BB b=new BB(10); 程序输出的结果是什么? AA AAAA BBBB

相关文档
相关文档 最新文档