JAVA语言程序设计复习题及答案-1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA语言程序设计复习题及答案-1
JAVA语言程序设计考试试题及部分答案
一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1.下列语句序列执行后,k 的值是( B )。
int m=3, n=6, k=0;
while( (m++) < ( -- n) ) ++k;
A) 0 B) 1 C) 2 D) 3
2.设i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。
A) i = i + 2 B) a[0] = 7;
C) i++ - --j; D) a(0) = 66;
3.Java语言的类间的继承关系是( B )。
A) 多重的 B) 单重的 C) 线程的 D) 不能继承
4.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( C )。
i += i - 1;
A) 10 B) 121 C) 11 D) 100
5.下列选项中,用于在定义子类时声明父类名的关键字是( C )。
A)interface B) package C) extends D) class
6.若已定义 byte[ ] x= {11,22,33,-66} ;
其中0≤k≤3,则对x数组元素错误的引用是( C )。
A) x[5-3] B) x[k] C) x[k+5] D) x[0]
7.下列语句序列执行后,ch1 的值是( B )。
char ch1='A',ch2='W';
if(ch1 + 2 < ch2 ) ++ch1;
A) 'A' B) 'B' C) 'C' D) B
8.下列语句序列执行后,i 的值是( D )。
int i=8, j=16;
if( i-1 > j ) i--; else j--;
A) 15 B) 16 C) 7 D) 8
9.下列语句序列执行后,k 的值是( C )。
int i=10, j=18, k=30;
switch( j - i )
{ case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A) 31 B) 32 C) 2 D) 33
10.下面语句执行后,i 的值是( B )。
for( int i=0, j=1; j < 5; j+=3 ) i=i+j;
A) 4 B) 5 C) 6 D) 7
11.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是( B )。
A) x > y || x > z B) x != y
C) z > ( y + x ) D) x < y & ! ( x < z )
12.下列语句序列执行后,i的值是( D )。
int i=16;
do { i/=2; } while( i > 3 );
A) 16 B) 8 C) 4 D) 2
13.以下由 for 语句构成的循环执行的次数是( B )。
for ( int i = 0; true ; i++) ;
A) 有语法错,不能执行 B) 无限次
C) 执行1次 D) 一次也不执行
14.定义类头时能使用的修饰符是(C )。
A) private B) static C) abstract D) protected
15.设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值,
正确的switch语句是D )。
A) switch (x + y) B) switch ( ch + 1 )
{ ...... } { ...... }
C) switch ch D) switch ( a + b );
{ ...... } { ...... }
16. 下列最终属性 i 的定义中,正确的是( )。
A) static final int i=100; B) final int i=1.2;
C) final i='w'; D) final char i;
17. 下列类定义中,不正确的是(C )。
A) class x { .... }
B) class x extends y { .... }
C) static class x implements y1,y2 { .... }
D) public class x extends Applet { .... }
18. 设x、y为已定义的类名,下列声明x类的对象x1的语句中正确的是( )。
A) static x x1; B) public x x1=new x(int 123);
C) y x1; D) x x1=x( );
19. 设 i、j、k 为类 x 中定义的 int 型变量名,下列类 x 的构造函数中不正确的是(B )。
A) x( int m){ ... } B) void x( int m){ ... }
C) x( int m, int n){ ... } D) x( int h,int m,int n){ ... }
20. 下列方法定义中,正确的是( A )。
A) int x( ){ char ch='a'; return (int)ch; }
B) void x( ){ ...return true; }
C) int x( ){ ...return true; }
D) int x( int a, b){ return a+b; }
21. 用于定义类成员的访问控制权的一组关键字是( D )。
A) class, float, double, public
B) float, boolean, int, long
C) char, extends, float, double
D) public, private, protected
22. 不能构成循环的语句是( C )。
A) for 语句 B) while 语句 C) switch 语句 D) do__while 语句
23. 下列程序段执行后 b3 的结果是( D )。
boolean b1=true, b2, b3;
24= b1 ? b1 : b2;
A) 0 B) 1 C) true D) false
25 下面数据结构中,属于非线性的是( B )。
A) 线性表 B) 树 C) 队列 D) 堆栈
11. 设有定义int i=123; long j=456; 下面赋值不正确的语句是( D )。
A) j=i; B) j=(long)i; C) i=(int)j; D) i=j;
二、填空题:(每空1分)
1. 构造函数_没__有返回值。
2. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float 和 ___ double _______两种具体类型。
3. 创建类对象的运算符是__ new。
4. 当整型变量n的值不能被13除尽时,其值为false 的Java语言表达式是__n%13==0___________ 。
5. 在Java语言中,所有的数组都有一个lenght属性,这个属性存储了该数组的__元素个数。
6. 定义类就是定义一种抽象的______父类______,它是所有具有一定共性的对象的抽象描述。
7. 在Java语言中,使用__平台无关___、___java虚拟机___等技术,实现软件重用。
8. 表达式3/6 * 5的计算结果是____0____ 。
9.下面是一个类的定义:
public class _int Myclass___________
{
int x, y;
Myclass ( int i, ___=0____) // 构造函数
{ x=i; y=j; } }
10.下面是一个Java Application 的主类的定义,其功能是输出所有命令行参数。
import java.io.*;
public class MyClass
{
public static void main(String args[ ])
{
if( args.length !=_0__)
for(int i=0; i < args.length; i++)
System.out.println(_"i="+i__________);
else System.out.println(没有命令行参数); } }
11下面是一个小程序的主类myprogram的定义, 其中A、B是该主类所在源程序中已定义的另两个类的类名:
import java awt.*;
import java applet.*;
public class myprogram extends Applet//定义小程序的主类{
A a;
B b;
public _____ myprogram ___ init( )
{ a=new A( ); b=___new__ B( ); }
}
12. Java的复合数据类型有 : 类、数组和___接口____等。
Java的简单数据类型有 : 数值类型(整形和浮点类型),自负类型和布尔类型
13. 表达式3/6 * 5的计算结果是_0_______ 。
14.定义初值为10的10次方的长整型变量lvar 的语句是:_______long lvar=1*e10___________________。
15. 顺序结构、分支结构(或称选择结构)、__循环结构__________是结构化程序设计的三种基本流程控制结构。
16. 以下方法 m 的功能是求两参数之积的整数部分。
int m ( float x, float y )
{ _______k=(int)x*y___________; }
17. Java 源程序文件编译后产生的文件称为____字节码____文件,其扩展名为___.class_______ 。
18.Java 和 c++都是面向对象的程序设计语言。
三、程序分析:(每题4分)
1. 下面是一个排序的程序:
import java.io.*;
public class Test56_Sort
{ public static void main(String args[ ]) {
int[] a={42,99,5,63,95,36,2,69,200,96}; System.out.println(排序前的数据序列:); ShowArray(a);
Sort(a);
System.out.println(排序后的数据序列:); ShowArray(a);
}
public static void Sort(int[] x)
{
int w;
for(int i=1; i<="" p="">
{
for(int j=0; j<="" p="">
if(x[j]>x[j+1])
{ w=x[j]; x[j]=x[j+1]; x[j+1]=w; }
/* if(i==1||i==2) ShowArray(x);
if(i==2) break; */
}
}
public static void ShowArray(int b[]) {
for(int i=0; i<="" p="">
System.out.print("b[i"+i+"]=" +b[i]); System.out.println( );
}
}
问题:如果将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么? 排序前的数据序列:
b[0]=42b[1]=99b[2]=5b[3]=63b[4]=95b[5]=36b[6]=2b[7]=6 9b[8]=200b[9]=96
b[0]=42b[1]=5b[2]=63b[3]=95b[4]=36b[5]=2b[6]=69b[7]=9 9b[8]=96b[9]=200
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=9 6b[8]=99b[9]=200
排序后的数据序列:
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=9 6b[8]=99b[9]=200
2. 请写下程序的输出结果:
public class Test52
{
String str1="Hello, Java world! \t";
String str2="Hello, students!" ;
public static void main(String args[])
{
System.out.print(str1);
System.out.println(str2);
}
}
输出结果:
3. 请写下程序的输出结果:
public class T2_4 {
public static void main(String[] args)
{
int i,j;
char c='*';
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
System.out.print("* ");
System.out.println();
}
}
}
输出结果:
4、请写下程序的输出结果:
public class ex2_2
{
public static void main (String args[ ] ) {
int x , y ;
byte b = 6;
float z = 1.234f ;
double w = 1.23;
boolean flag;
x = 12 ;
y = 300;
flag=x>y;
System.out.println("x>y=="+flag); flag=z>w;
System.out.println("z>w=="+flag);
}
}
四、问答题:(每题5分,)
1. Java的接口和C++的虚类的相同和不同处。
由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。
与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。
当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。
2. 垃圾回收的优点和原理。
并考虑2种回收机制。
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
3,谈谈final, finally, finalize的区别。
Final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
Finally-再异常处理时提供finally 块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
Finalize-方法名。
Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在
Object 类中定义的,因此所有的类都继承了它。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize ()方法是在垃圾收集器删除对象之前对这个对象调用的。
4,数组有没有length()这个方法?String有没有length()这个方法?举例说明使用方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
5. Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。
违反语义规则包括2种情况。
一种是JAVA 类库内臵的语义检查。
例如数
组下标越界,会引发IndexOutOfBoundsException;访问null 的对象时会引发NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。
所有的异常都是/doc/8a2360832.html
ng.Thowable的子类。
五、程序设计:(每题11分,共33分)
1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
2、编程求解:所有两位整数能被3整除的数的和,以及不能被3整除的数的各位数字之和。
3、设计一个程序求解e的值。
精度达到1.0e-6,
4、请设计一个对N个数进行排序的程序
一、选择题(每道题只有一个正确答案,每小题2分,共30分)15道题
1、关于Java语言叙述错误的是:( C )
A.Java语言具有跨平台性
B.Java是一种面向对象的语言
C.Java语言中的类可以多继承
D.Java的垃圾收集机制自动回收程序已不再使用的对象
2、以下叙述正确的是:( B )的确台a
A.构造方法必须是public方法
B.main方法必须是public方法
C.Java应用程序的文件名可以是任意的
D.构造方法应该声明为void类型
3、关于Java中数据类型叙述正确的是:( B )
A、整型数据在不同平台下长度不同
B.boolean类型数据只有2个值,true和false
C.数组属于简单数据类型
D.Java中的指针类型和C语言的一样
4、设 int x=1,float y=2,则表达式 x / y的值是:( D )A.0
B.1
C.2
D.以上都不是
5、以下语句有语法错的是:( A )
A.int x=1;y=2;z=3
B.for (int x=10,y=0;x>0;x++);
C.while (x>5);
D.for(; ;);
6、关于类和对象的叙述正确的是:( A )
A.Java的类分为两大部分:系统定义的类和用户自定义的类B.类的静态属性和全局变量的概念完全一样,只是表达形式不同C.类的成员至少有一个属性和一个方法
D.类是对象的实例化
7、以下有关构造方法的说法,正确的是:( A )
A.一个类的构造方法可以有多个
B.构造方法在类定义时被调用
C.构造方法只能由对象中的其它方法调用
D.构造方法可以和类同名,也可以和类名不同
8、以下有关类的继承的叙述中,正确的是:( D )
A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 B.子类只能继承父类的方法,不能继承父类的属性C.子类只能继承父类的非私有属性,不能继承父类的方法
D.子类不能继承父类的私有属性
9、下列属于容器的组件有:( B )
A.JButton
B.JPane
C.Canvas
D.JTextArea
10、void 的含义:( C )
A.方法体为空
B.定义的方法没有形参
C.定义的方法没有返回值
D.方法的返回值不能参加算术运算
11、关于Java中异常的叙述正确的是:( D )
A.异常是程序编写过程中代码的语法错误
B.异常是程序编写过程中代码的逻辑错误
C.异常出现后程序的运行马上中止
D.异常是可以捕获和处理的
12、所有的异常类皆继承哪一个类?( C )
A.java.io.Exception
B./doc/8a2360832.html
ng.Throwable
C./doc/8a2360832.html
ng.Exception
D./doc/8a2360832.html
ng.Error
13、下面哪个不是java语言中的关键字?( B )
A.long
B.sizeof
C.instanceof
D.const
14、为实现进程之间的通信,需要使用下列那种流才合适?(D)
A.Data stream
B.File stream
C.Buffered stream
D.Piped stream
15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D) A.ActionListener
B.MouseListener
C.MouseMotionListern
D.ItemListener
二、填空题(每空1分,共20分)
1、面向对象程序设计所具有的基本特征是:___抽象性___,_封装性___,_继承性__,
_多态性__
2、数组x定义如下
int x[ ][ ]=new int[3][2]
则 x..length 的值为____3________,
x[0].length 的值为_____2_______。
3、Java中实现多线程一般使用两种方法,一是___继承Thread类_________,二是_____实现Runnable方法__________
4、Java的图形用户界面设计中,有很多布局管理器用来摆放组件的位臵,一般用到的布局管理器有(列出四种即可)__FlowLayout_____,___GridLayout_____,__BorderLayout_____,___CardLayout_______
5、Applet常用的方法是:__init()_、__run()__、__stop()__和destroy()。
三、阅读程序,写出程序的输出结果(每题5分,共20分)
1、class A{
private int privateVar;
A(int _privateVar){
privateVar=_privateVar;
}
boolean isEqualT o(A anotherA){
if(this.privateVar == anotherA.privateVar)
return true;
else
return false;
}
}
public class B{
public static void main(String args[]){
A a = new A(1);
A b = new A(2);
System.out.println(a.isEqualTo(b));
}
}
程序的输出结果为:____false_____
2、class A {
double f(double x, double y) {
return x * y;
}
}
class B extends A {
double f(double x, double y) {
return x + y;
}
}
public class Test {
public static void main(String args[]) {
B obj = new B();
System.out.println("The program output is " + obj.f(4, 6)); } }
程序的输出结果为:__ The program output is 10_
3、public class Unchecked {
public static void main(String[] args) {
try {
method();
} catch (Exception e) {
System.out.println("A");
} finally {
System.out.println("B");
}
}
static void method() {
try {
wrench();
System.out.println("C");
} catch (ArithmeticException e) {
System.out.println("D");
} finally {
System.out.println("E");
}
System.out.println("F");
}
static void wrench() {
throw new NullPointerException();
}
}
程序的输出结果为:
E
A
B
4、public class Test {
public static void main(String[] args) {
int x;
int a[] = { 0, 0, 0, 0, 0, 0 };
calculate(a, a[5]);
System.out.println("the value of a[0] is " + a[0]); System.out.println("the value is a[5] is " + a[5]); }
static int calculate(int x[], int y) {
for (int i = 1; i < x.length; i++)
if (y < x.length)
x[i] = x[i - 1] + 1;
return x[0];
}
}
程序的输出结果为:
the value of a[0] is 0
the value is a[5] is 5
1. 下面哪些是short型的取值范围 [C]
A. -27 – 27-1
B. 0 – 216-1
C. -215 – 215-1
D. -231 – 231-1
2. 下面哪些是合法的标识符 [ABE]
A. $persons
B. TwoUsers
C. *point
D. this
E. _endline
3. 哪些是将一个十六进制值赋值给一个long型变量 [D]
A. long number = 345L;
B. long number = 0345;
C. long number = 0345L;
D. long number = 0x345L;
4. 下面的哪些程序片断可能导致错误。
[BD]
A.
String s = "Gone with the wind";
String t = " good ";
String k = s + t;
B.
String s = "Gone with the wind";
String t;
t = s[3] + "one";
C.
String s = "Gone with the wind";
String standard = s.toUpperCase();
D.
String s = "home directory";
String t = s - "directory";
5. 在// point x处的哪些声明是合法的 [DE]
class Person {
private int a;
public int change(int m){ return m; }
}
public class Teacher extends Person {
public int b;
public static void main(String arg[]){
Person p = new Person();
Teacher t = new Teacher();
int i;
// point x
}
}
A. i = m;
B. i = b;
C. i = p.a;
D. i = p.change(30);
E. i = t.b;
6. 当Frame的大小被改变时, Frame中的按钮的位臵也可能被改变,请问此时使用
的是什么布局管理器 [B]
A. BorderLayout
B. FlowLayout
C. CardLayout
D. GridLayout
7. 给出下面的代码片断
1 public void create() {
2 Vector myVect;
3 myVect = new Vector();
4 }
下面的哪些陈述是正确的? [ADE]
A. 第二行的声明不会为变量myVect分配内存空间。
//指的是堆空间,只是在栈中分配;这里不用较真.自己理解就好;
B. 第二行的声明分配一个到Vector对象的引用的内存空间。
C. 第二行语句创建一个Vector类对象。
D. 第三行语句创建一个Vector类对象。
E. 第三行语句为一个Vector类对象分配内存空间。
//分配栈空间,相当于指针,但是不分配"到Vector对象的引用的空间";选项二的意思是分配了堆空间;
8. 下面的哪些答案可以用以表示八进制值8? [A]
A. 010
B. 0x10
C. 08
D. 0x8
9. 哪些不是Java关键字 [AB]
A. TRUE
B. sizeof
C. const
D. super
E. void
10. 下面的哪些叙述为真。
[AD]
A. equals()方法判定引用值是否指向同一对象。
//不说是谁的就是默认的
B. == 操作符判定两个分立的对象的内容和类型是否一致。
C. equals()方法只有在两个对象的内容一致时返回true。
D. 类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。
//当两个独立的对象的内容和类型一致;
11. 下面关于继承的哪些叙述是正确的。
[AD]
A. 在java中只允许单一继承。
B. 在java中一个类只能实现一个接口。
C. 在java中一个类不能同时继承一个类和实现一个接口。
D. java的单一继承使代码更可靠。
12. 第十行的声明将调用哪些方法. [D]
1 class Person {
2 public void printValue(int i, int j) { }
3 public void printValue(int i){ }
4 }
5 public class Teacher extends Person {
6 public void printValue() { }
7 public void printValue(int i) {}
8 public static void main(String args[]){
9 Person t = new Teacher();
10 t.printValue(10);
11 }
12 }
A. 第2行的方法
B. 第3行的方法
C. 第6行的方法
D. 第7行的方法
13. 下面哪些不是java的原始数据类型 [BC]。