JAVA语言程序设计复习题及答案Word格式.docx
《JAVA语言程序设计复习题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA语言程序设计复习题及答案Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
9.下列语句序列执行后,k的值是(C)。
inti=10,j=18,k=30;
switch(j-i)
{case8:
k++;
case9:
k+=2;
case10:
k+=3;
default:
k/=j;
}
A)31B)32C)2D)33
10.下面语句执行后,i的值是(B)。
for(inti=0,j=1;
j<
5;
j+=3)i=i+j;
A)4B)5C)6D)7
11.设有定义floatx=3.5f,y=4.6f,z=5.7f;
则以下的表达式中,值为true的是(B)。
A)x>
y||x>
zB)x!
=y
C)z>
(y+x)D)x<
y&
!
(x<
z)
12.下列语句序列执行后,i的值是(D)。
inti=16;
do{i/=2;
}while(i>
3);
A)16B)8C)4D)2
13.以下由for语句构成的循环执行的次数是(B)。
for(inti=0;
true;
i++);
A)有语法错,不能执行B)无限次
C)执行1次D)一次也不执行
14.定义类头时能使用的修饰符是(C)。
A)privateB)staticC)abstractD)protected
15.设int型变量a、b,float型变量x、y,char型变量ch均已正确定义并赋值,
正确的switch语句是(D)。
A)switch(x+y)B)switch(ch+1)
{......}{......}
C)switchchD)switch(a+b);
{......}{......}
16.下列最终属性i的定义中,正确的是()。
A)staticfinalinti=100;
B)finalinti=1.2;
C)finali='
w'
D)finalchari;
17.下列类定义中,不正确的是(C)。
A)classx{....}
B)classxextendsy{....}
C)staticclassximplementsy1,y2{....}
D)publicclassxextendsApplet{....}
18.设x、y为已定义的类名,下列声明x类的对象x1的语句中正确的是()。
A)staticxx1;
B)publicxx1=newx(int123);
C)yx1;
D)xx1=x();
19.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是(B)。
A)x(intm){...}B)voidx(intm){...}
C)x(intm,intn){...}D)x(inth,intm,intn){...}
20.下列方法定义中,正确的是(A)。
A)intx(){charch='
a'
return(int)ch;
}
B)voidx(){...returntrue;
C)intx(){...returntrue;
D)intx(inta,b){returna+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)。
booleanb1=true,b2,b3;
24=b1?
b1:
b2;
A)0B)1C)trueD)false
25下面数据结构中,属于非线性的是(B)。
A)线性表B)树C)队列D)堆栈
11.设有定义inti=123;
longj=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.下面是一个类的定义:
publicclass_intMyclass___________
{
intx,y;
Myclass(inti,___=0____)//构造函数
x=i;
y=j;
}
10.下面是一个JavaApplication的主类的定义,其功能是输出所有命令行参数。
importjava.io.*;
publicclassMyClass
publicstaticvoidmain(Stringargs[])
if(args.length!
=_0__)
for(inti=0;
i<
args.length;
i++)
System.out.println(_"
i="
+i__________);
elseSystem.out.println(没有命令行参数);
11下面是一个小程序的主类myprogram的定义,其中A、B是该主类所在源程序中已定义的另两个类的类名:
importjavaawt.*;
importjavaapplet.*;
publicclassmyprogramextendsApplet//定义小程序的主类
Aa;
Bb;
public_____myprogram___init()
{a=newA();
b=___new__B();
12.Java的复合数据类型有:
类、数组和___接口____等。
Java的简单数据类型有:
数值类型(整形和浮点类型),自负类型和布尔类型
13.表达式3/6*5的计算结果是_0_______。
14.定义初值为10的10次方的长整型变量lvar的语句是:
_______longlvar=1*e10___________________。
15.顺序结构、分支结构(或称选择结构)、__循环结构__________是结构化程序设计的三种基本流程控制结构。
16.以下方法m的功能是求两参数之积的整数部分。
intm(floatx,floaty)
{_______k=(int)x*y___________;
17.Java源程序文件编译后产生的文件称为____字节码____文件,其扩展名为___.class_______。
18.Java和c++都是面向对象的程序设计语言。
三、程序分析:
(每题4分)
1.下面是一个排序的程序:
publicclassTest56_Sort
int[]a={42,99,5,63,95,36,2,69,200,96};
System.out.println(排序前的数据序列:
);
ShowArray(a);
Sort(a);
System.out.println(排序后的数据序列:
publicstaticvoidSort(int[]x)
intw;
for(inti=1;
i<
x.length;
for(intj=0;
j<
x.length-1;
j++)
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;
*/
publicstaticvoidShowArray(intb[])
b.length;
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]=69b[8]=200b[9]=96
b[0]=42b[1]=5b[2]=63b[3]=95b[4]=36b[5]=2b[6]=69b[7]=99b[8]=96b[9]=200
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
排序后的数据序列:
2.请写下程序的输出结果:
publicclassTest52
Stringstr1="
Hello,Javaworld!
\t"
Stringstr2="
Hello,students!
"
;
publicstaticvoidmain(Stringargs[])
System.out.print(str1);
System.out.println(str2);
输出结果:
3.请写下程序的输出结果:
publicclassT2_4{
publicstaticvoidmain(String[]args)
inti,j;
charc='
*'
for(i=0;
i<
5;
i++)
{
for(j=0;
j<
=i;
j++)
System.out.print("
*"
System.out.println();
4、请写下程序的输出结果:
publicclassex2_2
publicstaticvoidmain(Stringargs[])
intx,y;
byteb=6;
floatz=1.234f;
doublew=1.23;
booleanflag;
x=12;
y=300;
flag=x>
y;
System.out.println("
x>
y=="
+flag);
flag=z>
w;
z>
w=="
四、问答题:
(每题5分,)
1.Java的接口和C++的虚类的相同和不同处。
由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。
与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。
当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是publicstatic,所有方法默认情况下是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关键字引发异常。
所有的异常都是java.lang.Thowable的子类。
五、程序设计:
(每题11分,共33分)
1、编程:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"
我ABC"
4,应该截为"
我AB"
,输入"
我ABC汉DEF"
,6,应该输出为"
而不是"
我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、设intx=1,floaty=2,则表达式x/y的值是:
(D)
A.0
B.1
C.2
D.以上都不是
5、以下语句有语法错的是:
(A)
A.intx=1;
y=2;
z=3
B.for(intx=10,y=0;
0;
x++);
C.while(x>
5);
D.for(;
6、关于类和对象的叙述正确的是:
A.Java的类分为两大部分:
系统定义的类和用户自定义的类
B.类的静态属性和全局变量的概念完全一样,只是表达形式不同
C.类的成员至少有一个属性和一个方法
D.类是对象的实例化
7、以下有关构造方法的说法,正确的是:
A.一个类的构造方法可以有多个
B.构造方法在类定义时被调用
C.构造方法只能由对象中的其它方法调用
D.构造方法可以和类同名,也可以和类名不同
8、以下有关类的继承的叙述中,正确的是:
A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性
B.子类只能继承父类的方法,不能继承父类的属性
C.子类只能继承父类的非私有属性,不能继承父类的方法
D.子类不能继承父类的私有属性
9、下列属于容器的组件有:
A.JButton
B.JPane
C.Canvas
D.JTextArea
10、void的含义:
A.方法体为空
B.定义的方法没有形参
C.定义的方法没有返回值
D.方法的返回值不能参加算术运算
11、关于Java中异常的叙述正确的是:
A.异常是程序编写过程中代码的语法错误
B.异常是程序编写过程中代码的逻辑错误
C.异常出现后程序的运行马上中止
D.异常是可以捕获和处理的
12、所有的异常类皆继承哪一个类?
A.java.io.Exception
B.java.lang.Throwable
C.java.lang.Exception
D.java.lang.Error
13、下面哪个不是java语言中的关键字?
A.long
B.sizeof
C.instanceof
D.const
14、为实现进程之间的通信,需要使用下列那种流才合适?
(D)
A.Datastream
B.Filestream
C.Bufferedstream
D.Pipedstream
15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?
A.ActionListener
B.MouseListener
C.MouseMotionListern
D.ItemListener
二、填空题(每空1分,共20分)
1、面向对象程序设计所具有的基本特征是:
___抽象性___,_封装性___,_继承性__,_多态性__
2、数组x定义如下
intx[][]=newint[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()。
三、阅读程序,写出程序的输