admin 管理员组文章数量: 887031
2023年12月17日发(作者:实体类和接口的区别)
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
1 / 46
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 )
2 / 46
{ ...... } { ...... }
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 语句
3 / 46
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。
4 / 46
}
}
10.下面是一个Java Application 的主类的定义,其功能是输出所有命令行参数。
import .*。
public class MyClass
{
public static void main(String args[ ])
{
if( !=_0__)
for(int i=0。 i < 。 i++)
n(_"i="+i__________)。
else n(没有命令行参数)。
}
}
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. 顺序结构、分支结构(或称选择结构)、__循环结构__________是结构化程序设5 / 46
计的三种基本流程控制结构。
16. 以下方法 m 的功能是求两参数之积的整数部分。
int m ( float x, float y )
{ _______k=(int)x*y___________。 }
17. Java 源程序文件编译后产生的文件称为____字节码____文件,其扩展名为
___.class_______ 。
18.Java 和 c++都是面向对象的程序设计语言。
三、程序分析:(每题4分)
1. 下面是一个排序的程序:
import .*。
public class Test56_Sort
{
public static void main(String args[ ])
{
int[] a={42,99,5,63,95,36,2,69,200,96}。
n(排序前的数据序列:)。
ShowArray(a)。
Sort(a)。
n(排序后的数据序列:)。
ShowArray(a)。
}
public static void Sort(int[] x)
{
int w。
for(int i=1。 i<。 i++)
{
for(int j=0。 j<-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)。
6 / 46
if(i==2) break。 */
}
}
public static void ShowArray(int b[])
{
for(int i=0。 i<。 i++)
("b[i"+i+"]=" +b[i])。
n( )。
}
}
问题: 如果将方法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
排序后的数据序列:
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
2. 请写下程序的输出结果:
public class Test52
{
String str1="Hello, Java world! t"。
String str2="Hello, students!" 。
public static void main(String args[])
{
(str1)。
n(str2)。
}
}
输出结果:
7 / 46
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++)
("* ")。
n()。
}
}
}
输出结果:
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。
n("x>y=="+flag)。
flag=z>w。
8 / 46
n("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()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个9 / 46
对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4,数组有没有length()这个方法? String有没有length()这个方法?举例说明使用方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
5. Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发
NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw关键字引发异常。所有的异常都是le的子类。
五、程序设计:(每题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 A B C、关...于JavaJavaJavaJava是语语语一言言叙言种中述具面的错误有向类对可的是跨象以:平的多(
台语继C )
性
言
承
D.Java的垃圾收集机制自动回收程序已不再使用的对象
2 A、以.下构叙述造正方确的法是必10 / 46
:须(
是B )的确台方a
法 public
B C D...mainJava构应造Java型方用方程法法序必的应文该须件声是名明可为public以是void任方意类法
的
型
3、关于 A、整中数据类型叙述正确的是:( B )
数据在不同2简类型平台下长度和类的一不同
B.boolean C D..数Java类型数据只有组中的属指针于个值,true单和C数语据言false
型
样
4、设 int x=1,float y=2,则表达式 x / y的值是:( D )
5
DB、以A.C.D下语.for
.句有int
(int
.for(ABC以语法x=1x=10,y=0while
。
上错的;;...都是:y=2x>0;(x>5)。)(不
;x++)A
0
1
2
是
)
z=3
。
。
。
6、关于类和对象的叙述正确的是:( A )
A.Java的类分为两大部分:系统定义的类和用户自定义的类
B.类的静态属性和全局变量的概念完全一样,只是表达形式不同
C D.类.的成类员至是少有对一象个属的性和实一个例方法
化
7、以下有关构造方法的说法,正确的是:( A )
AB..一构个造类方的法构在造类方法定可义以时有被多调个
用
C.构造方法只能由对象中的其它方法调用
D.构造方法可以和类同名,也可以和类名不同
8、以下有关类的继承的叙述中,正确的是:( D )
A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性
11 / 46
B.子类只能继承父类的方法,不能继承父类的属性
C.子类只能继承父类的非私有属性,不能继承父类的方法
9
10
DBC.、A..方void
.定定法Java义的返义的回D的含方的方值义法方法不能法没参D、.下子列类属不于ABC.:(体没有加有返算术
为形回运能容继器承的组父件...类有的:私(有
属B
性
)
JButton
JPane
Canvas
JTextArea
C )
空
参
值
算
11、关于中异常的叙述正确的是:( D )
A.异常是程序编写过程中代码的语法错误
B.异常是程序编写过程中代码的逻辑错误
CD..异常异出常现是后可程序以的捕运获行和马处上中理止
的
12、所有的异常类皆继承哪一个类?( C )
ABCDjava....ion
ble
ion
13、下面哪个不是
CDAB语言中的关键字?( B )
....long
sizeof
instanceof
const
14、为实现进程之间的通信,需要使用下列那种流才合适?(D)
A.12 / 46
Data stream
CB..File
Buffered
Piped
stream
stream
stream D.15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(
二、填空CD题(每空AB..1分,共D..)
ActionListener
MouseListener
MouseMotionListern
ItemListener
20分)
1、面向对象程序设计所具有的基本特征是:___抽象性___,_封装性___,_继承性__2
则、int
,数_组x[
x..length
的的值多x][
值为为定态义]=new
性如__
下
int[3][2]
,
。
____3_____________2_______x[0].length
3、Java中实现多线程一般使用两种方法,一是___继承Thread类_________,二是_____实现Runnable方法__________
4、Java的图形用户界面设计中,有很多布局管理器用来摆放组件的位置,一般用到的布局管理器有(列出四种即可)__FlowLayout_____,___GridLayout_____,__BorderLayout_____,___CardLayout_______
5、Applet常用的方法是:__init()_、__run()__、__stop()__和destroy()。
三、阅读程序,写出程序的输出结果(每题5分,共20分)
1 private
A(int
boolean
if(eVar
13 / 46
privateVar=_privateVar
isEqualTo(A
==
、int
class
privateVarA{
。
_privateVar){
。
}
anotherA){
eVar)
public
public
A
A
return
return
true。
else
false。
}
}
class
static
a
b
=
=
void
new
new
main(String
A(1)A(2)B{
args[]){
。
。
。
}
}
n(lTo(b))
程
public
public
static
B
class
void
obj =
main(String
new
Test
args[])
B()class
double
B
f(double
return
extends
x,
x
double
+ yA
y)
序的2double
输出、f(double
return
结果为:
____false_____
A {
y)
y{
。
}
}
{
{
。
}
}
{
{
。
class
x,
x
double
*
n("The program output is " + obj.f(4, 6))。
}
}
程序的输出结果为:__ The program output is 10_
14 / 46
3、public class Unchecked
public static void main(String[] args)
try
method() } catch (Exception e)
n("A") } finally
n("B") }
}
static void method()
try
wrench() n("C") } catch (ArithmeticException e)
n("D") } finally
n("E") }
n("F") }
static void wrench()
throw new NullPointerException() }
}
程序的输出结果为E
A
B
4、public class Test
15 / 46
{
{
{
。
{
。
{
。
{
{
。
。
{
。
{
。
。
{
。
:
{
public
int
int a[]
static void
xmain(String[] args) {
。
= { 0, 0, 0,
a[5])0, 0, 0 }。
。 calculate(a,
n("the
n("the
value
value
of
is
a[0]
a[5]
is
is
"
"
+
+
a[0])a[5])。
。
}
static int calculate(int
for (int i = 1。 i
if (y
x[i] = x[i -
return x[0] }
}
程序的输出the value of
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
16 / 46
x[], int
< <
1] +
结果a[0]
y) {
。 i++)
)
1。
。
为:
is 0
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 = rCase()。
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()。
17 / 46
int i。
// point x
}
}
A. i = m。
B. i = b。
C. i = p.a。
D. i = (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对象的引用的空间"。选项二的意思是分配了堆空间。
18 / 46
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) {}
19 / 46
8 public static void main(String args[]){
9 Person t = new Teacher()。
10 alue(10)。
11 }
12 }
A. 第2行的方法
B. 第3行的方法
C. 第6行的方法
D. 第7行的方法
13. 下面哪些不是java的原始数据类型 [BC]
A. short
B. Boolean
C. unit
D. float
14. 下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的访问是排他的?
[B]
A. transient
B. synchronized
C. serialize
D. static
15. main()方法的返回类型是什么? [B]
A. int
B. void
C. boolean
D. static
16. 给出以下关于一个使用适当的字符间距的字体的TextField的表达式
TextField t = new TextField("they are good",40)。//40指的是像素
哪些叙述是对的? [D]
A. 被显示的字符串可以使用多种字体。
20 / 46
B. 一行中最大的字符数是40
C. 显示的宽度正好是40个字符宽。
D. 用户可以编辑字符。
17. 关于垃圾收集的哪些叙述是对的? [B]
A. 程序开发者必须自己创建一个线程进行内存释放的工作。
B. 垃圾收集将检查并释放不再使用的内存。
C. 垃圾收集允许程序开发者明确指定并立即释放该内存。
D. 垃圾收集能够在期望的时间释放被java对象使用的内存。
18. 给出下面的代码
1 public class Test {
2 int m, n。
3 public Test() {}
4 public Test(int a) { m=a。 }
5 public static void main(String arg[]) {
6 Test t1,t2。
7 int j,k。
8 j=0。 k=0。
9 t1=new Test()。
10 t2=new Test(j,k)。
11 }
12 }
在编译时哪行将导致一个错误? [D]
A. 第3行
B. 第5行
C. 第6行
D. 第10行
19. Thread的方法resume()负责恢复哪些线程的执行? [D]
A. 通过调用stop()方法而停止的线程。
B. 通过调用sleep()方法而停止运行的线程。
21 / 46
C. 通过调用wait()方法而停止运行的线程。
D. 通过调用suspend()方法而停止运行的线程。 //已经过期了
20. 有关线程的哪些叙述是对的? [BD]
A. 一旦一个线程被创建,它就立即开始运行。
B. 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
C. 当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。//比它
优先级高的进程抢占了cpu,它运行的时间根据操作系统而定;
D. 一个线程可能因为不同的原因停止并进入就绪状态。//可运行状态
21. 给出下面的不完整的方法
1
2 { success = connect()。
3 if (success==-1) {
4 throw new TimedOutException()。
5 }
6 }
已知TimedOutException 不是一个RuntimeException。下面的哪些声明可以被加入第一行完成此方法的声明 [BC]
A. public void method()
B. public void method() throws Exception
C. public void method() throws TimedOutException
D. public void method() throw TimedOutException
E. public throw TimedOutException void method()
22. 给出下面的代码
class Person {
String name,department。
public void printValue(){
n("name is "+name)。
n("department is "+department)。
}
22 / 46
}
public class Teacher extends Person {
int salary。
public void printValue(){
// 完成父类代码中printValue()相同的工作
n("salary is "+salary)。
}
}
下面的哪些表达式可以加入printValue()方法的注释部分? [D]
A. printValue()。
B. alue()。
C. alue()。
D. alue()。
23. 下面的哪些赋值语句是错的? [A]
A. float f = 11.1。
B. double d = 5.3E12。
C. double d = 3.14159。
D. double d = 3.14D。
24. 给出下面的不完整的类代码
class Person {
String name, department。
int age。
public Person(String n){ name = n。 }
public Person(String n, int a){ name = n。 age = a。 }
public Person(String n, String d, int a) {
// 完成Person(String n, int a)的逻辑
department = d。
}
}
下面的哪些表达式可以加到构造方法中的注释处? [C]
23 / 46
A. Person(n,a)。
B. this(Person(n,a))。 //构造函数的名字不能当方法名调用。
C. this(n,a)。
D. this(name,age)。 //构造方法的参数也不能直接传实例变量名
25. 下面关于变量及其范围的陈述哪些是对的? [ACD]
A. 实例变量是类的成员变量。
B. 实例变量用关键字static声明。
C. 在方法中定义的局部变量在该方法被执行时创建
D. 局部变量在使用前必须被初始化。
26. 给出下面的代码
public void test() {
try {
oneMethod()。
n("condition 1")。
} catch (ArrayIndexOutOfBoundsException e) {
n("condition 2")。
} catch(Exception e) {
n("condition 3")。
} finally {
n("finally")。
}
}
在oneMethod()方法运行正常的情况下将显示什么? [AD]
A. condition 1
B. condition 2
C. condition 3
D. finally
27. 给出下面的代码
public class Test {
void printValue(int m){
24 / 46
do {
n("The value is"+m)。
}while( --m > 10 )。
}
public static void main(String arg[]) {
int i=10。
Test t= new Test()。
alue(i)。
}
}
输出将是什么? [C]
A. 8
B. 9
C. 10
D. 11
28. 下面的有关声明的哪些叙述是对的? [BC]
A. 对原始数据类型例如boolean,byte的变量的声明不会为该变量分配内存空间。
B. 对原始数据类型例如boolean,byte的变量的声明将为之分配内存空间。
C. 非原始数据类型例如String,Vector的变量的声明不会为该对象分配内存。
D. 非原始数据类型例如String,Vector的变量的声明会为该对象分配内存。
//该对象指的是堆空间的对象。指向该对象的引用只能叫变量。
29. 类的设计要求它的某个成员变量不能被外部类直接访问。应该使用下面的哪些修饰符获得需要的访问控制? [D]
A. public
B. 不加修饰符
C. protected
D. private //面向对象编程P196页的表格,private一行有错误
30. 给出下面的代码片断
1 String str = null。
2 if ((str != null) && (() > 10)) {
25 / 46
3 n("more than 10")。
4 }
5 else if ((str != null) & (() < 5)) {//空指针异常
6 n("less than 5")。
7 }
8 else { n("end")。 }
哪些行将导致错误? [C]
A. 第1行
B. 第2行
C. 第5行
D. 第8行
31. 下面有关java代码安全性的叙述哪些是对的? [BCD]
A. 字节码校验器加载查询执行需要的所有类。
B. 运行时解释器执行代码。
C. 在运行时,字节码被加载,验证然后在解释器里面运行。
D. 类加载器通过分离本机文件系统的类和从网络导入的类增加安全性。
32. 给出下面的代码
public class Person{
int arr[] = new int[10]。//非静态属性
public static void main(String a[]) {
n(arr[1])。//静态方法不能访问非静态属性
}
}
哪些叙述是对的? [A]
A. 编译时出错。
B. 编译时正确而运行时出错。
C. 输出0。
D. 输出null。
26 / 46
33. 给出下面的代码
public class Parent {
public int addValue( int a, int b) {
int s。
s = a+b。
return s。
}
}
class Child extends Parent {
}
哪些方法可以加入类Child中? [BC] //方法的覆盖
A. int addValue( int a, int b ){// }
B. public void addValue (){// }
C. public int addValue( int a ){// }
D. public int addValue( int a, int b )throws Exception {//}
34. 公有成员变量MAX_LENGTH是一个int型值,变量的值保持常数值100,定义这个变量的代码为? [CD]
A. public int MAX_LENGTH=100。
B. final int MAX_LENGTH=100。
C. final public int MAX_LENGTH=100。 //修饰符的顺序可以交换
D. public final int MAX_LENGTH=100。
35. 下面的哪些java源文件代码片断是对的? [ACD]
A. package testpackage。
public class Test{//}
B. import .*。
package testpackage。
public class Test{// }
C. import .*。
class Person{// }
public class Test{// }
27 / 46
D. import .*。
import .*。
public class Test{// do something..}
36. 给出下面的类
public class Sample{
long length。
public Sample(long l){ length = l。 }
public static void main(String arg[]){
Sample s1, s2, s3。
s1 = new Sample(21L)。
s2 = new Sample(21L)。
s3 = s2。
long m = 21L。
}
}
哪个表达式返回true? [B]
A. s1 == s2。
B. s2 == s3。
C. m == s1。
D. (m)。
37. 给出下面有关的表达式
List l = new List(6,true)。//第二个参数是false的话只能选一个
其中哪些叙述是正确的? [AC]
A. 在没有其它的约束的条件下该列表将有6行可见。
B. 一行的最大字符数是6
C. 列表将允许用户多选
D. 列表只能有一项被选中
38. 给出下面的代码
class Parent {
28 / 46
String one, two。
public Parent(String a, String b){
one = a。
two = b。
}
public void print(){ n(one)。 }
}
public class Child extends Parent {
public Child(String a, String b){
super(a,b)。
}
public void print(){
n(one + " to " + two)。
}
public static void main(String args[]){
Parent p = new Parent("south", "north")。
Parent t = new Child("east", "west")。
()。
()。
}
}
下面的哪些情况或输出的结果正确? [E]
A. 编译时出错
B. south
east
C. south to north
east to west
D. south to north
east
E. south
29 / 46
east to west
39. 类Teacher和Student都是类Person的子类
Person p。
Teacher t。
Student s。
若p,t和s都是非空值
if(t instanceof Person) { s = (Student)t。 }
这个语句导致的结果是什么? [C] // 默认new时声明的都是本类。
A. 将构造一个Student对象
B. 表达式合法
C. 编译时非法
D. 编译时合法而在运行时可能非法
40. 给出下面的代码
String s= "hello"。
String t = "hello"。
char c[] = {'h','e','l','l','o'}。
下列选项里,哪些返回true? [ACD]
A. (t)。
B. (c)。
C. s==t。
D. (new String("hello"))。
E. t==c。
一、单选题(本大题15小题,每小题2分,共30分)
1.下列语句执行后,变量a、c的值分别是( )。
int x=182。
int a,c。
c=x/100。
a=x%10。
30 / 46
A) 1,2 B) 2,1 C) 1.82, 2 D) 100,82
【答案】B
2.下面哪个表达式可用得到x和y的最大值( )?
A) x>y?y:x B) x
【答案】B
3.以下是应用程序中定义的静态方法printBinary,若在其main方法中有方法调用语句printBinary(2),则输
出的结果是 ( )。
static void printBinary(int i) {
(i + "的2进制数表示为:t")。 for(int j = 31。 j >=0。 j--)
if(((1 << j) & i) != 0)
("1")。
else
("0")。
n()。//换行
}
A) 00000001
00000010
C) 00001111
00000000 【答案】B
4. 应用程序的main方法中有以下语句,则输出的结果是 ( )String s1="0.5",s2="12"。
double x=ouble(s1)。
int y=nt(s2)。
n(x+y)。
A) 12.5 B) 120.5 C) 12
【答案】A
5. 应用程序的main方法中有以下语句,则输出的结果是 ( )31 / 46
。
D)
。
B)
D)
12.5”
“
double x=1234.1234567。
DecimalFormat form1 = new DecimalFormat("0000.0")。
n("PI="+(x))。
A) PI=1234.1 B) PI=1234
C) PI=1234.1235 D) PI=1234.0
【答案】A
6.下列程序段执行后的结果是( )。
String s=new String("abcdefg")。
for(int i=0。i<()。i+=2){
((i))。
}
A) aceg B) ACEG C) abcdefg
【答案】A
7. 应用程序的main方法中有以下语句,则输出的结果是 ( )int[] x={122,33,55,678,-987}。
int max=x[0]。
for(int i=1。i<。i++){
if(x[i]>max)
max=x[i]。
}
n(max)。
A) 678 B) 122 C) -987
【答案】A
8.下列语句序列执行后,k 的值是( )。
int x=2, y=5, k=0。
switch( x%y ) {
case 0: k=x+y。 break。
case 1: k=x-y。 break。
case 2: k=x*y。 break。
default: k=x/y。 break。
32 / 46
D) abcd
。
D) 33
}
n(k)。
A) 2 B) 5 C) 10 D) 0
【答案】C
9. 下面的程序输出的结果是( )
public class A implements B {
public static void main(String args[]) {
int i。
A c1 = new A()。
i= c1.k。
n("i="+i)。
}
}
interface B {
int k = 10。
}
A) i=0 B) i=10 C) 程序有编译错误
【答案】B
10.应用程序的main方法中有以下语句,则输出的结果是 ( )int b[][]={{1, 2, 3}, {4,5}, {6,7}}。
int sum=0。
for(int i=0。i<。i++) {
for(int j=0。j
sum+=b[i][j]。
}
}
n("sum="+sum)。
A) 28 B)6 C) 9
【答案】A
33 / 46
。
D)
D) i=true
13
11. 有整型数组:int[] x={12,35,8,7,2}。,则调用方法(x)后,数组x中的元素值依次是( ).
A) 2 7 8 12 35 B) 12 35 8 7 2 C) 35 12 8 7
2 D) 8 7 12
35 2
【答案】A
12.编译和运行下面的应用程序,并在命令行界面输入12345,则回车后屏幕输出的结果是( ).
public class A {
public static void main(String args[]) throws IOException{
BufferedReader buf=new BufferedReader(
new InputStreamReader())。
String str=ne()。
int x=nt(str)。
n(x/100)。
}
}
A) 45 B)5 C) 123 D) 12345
【答案】C
13.下面的程序段执行后输出的结果是( )。
StringBuffer buf=new StringBuffer("Beijing2008")。
(7,"@")。
n(ng())。
A) Beijing@2008 B) @Beijing2008 C) Beijing2008@ D)
Beijing#2008 【答案】A
14. 下面的程序编译运行后输出的结果是( )。
public class A implements Runnable {
public static void main(String argv[]) {
A a = new A()。
34 / 46
Thread t = new Thread(a)。
()。
}
public void run() {
while(true) {
try{
tThread().sleep(1000)。
}catch(InterruptedException e){
n(ng())。
}
n("looping while")。
}
}
}
A) 在屏幕上重复输出"looping while"。 B) 在屏幕上输出一次"looping
while"。
C) 没有结果输出。 D) 以上说法都错误。
【答案】A
15.下面的程序段创建了BufferedReader类的对象in,以便读取本机d盘my文件夹下的文件。File构造函
数中正确的路径和文件名的表示是( )。
File f=new File(填代码处)。
file=new FileReader(f)。
in=new BufferedReader(file)。
A) "" B) "d:my1" C) "d:"
D) "d: "
【答案】C
二、多选题(本大题10小题,每小题2分,共20分)
35 / 46
1.下面的说法正确的是( )。
A) Java 语言是面向对象的、解释执行的网络编程语言。B) Java 语言具有可移植性,是与平台无关的编程语
言。
C) Java 语言可对内存垃圾自动收集。D) Java 语言编写的程序虽然是“一次编译,到处运行”,但必须要
java的运行环境。
【答案】ABCD
2.下面main()方法的定义哪些是正确的( )?
A)public static void main(String args[]) {} B)public
main(String[]) {}
C)public static void main(String[] args) {} D)public
main(String [] x) {}
【答案】ACD
3.定义变量如下:
char c='w'。 int i=8。 long L=15。f=8.9f。
以下赋值语句正确的是( )。
A) i=c+i。 B) c=c+i。 C) L=f+L。 D) f=i+L+f。
【答案】AD
4.下面哪些关键字能用来控制对类成员的访问( )?
A)public B)protected C)private D)default
【答案】ABC
5.面向对象程序设计的基本特征是( )。
A)抽象 B)封装 C)继承
36 / 46
void
void
D)多态
static
static
float
【答案】ABCD
6.下面关于类的说法正确的是( )。
A)类是 Java 语言中的一种复合数据类型。 B)类中包含数据变量和方法。
C)类是对所有具有一定共性的对象的抽象。 D) Java 语言的类只支持单继承。
【答案】ABCD
7. 编译并运行下面的程序,运行结果为( ).
public class T1 {
public static void main (String[] args){
T1 a=new T1()。
(8)。
(1.2f)。
}
void method(float i) {
n("float: "+i)。
}
void method(long i) {
n("long: "+i)。
}
}
A)程序有编译错误,因为两个method()方法必须定义为静态(static)的。
B)程序可以编译运行,输出结果为:
long: 8
float: 1.2
C)程序可以编译运行,输出结果为:
float: 1.2
long: 8
D) 程序中定义的两个参数不同的method方法称为方法重栽。
【答案】BD
8.下面是在命令行运行Java应用程序A,怎样才能在main(String args[])方法中访问单词"first" ( )?
37 / 46
java A the first snow , the first snow came.
A)args[0] B)args[1] C)args[2] D)args[5]
【答案】BD
9.编译并运行下面的程序,运行结果为( ).
public class A {
public static void main (String[] args) {
A a=new B( )。
()。
}
void test() {
("A")。
}
}
class B extends A {
void test() {
()。
n("B")。
}
}
A)子类B定义了与父类A中同名的方法test,java中称为方法的覆盖。 B)代码可以编译运行,并输出结果:AB
。
C)代码可以编译运行,并输出结果:A。 D)子类B定义了与父类A中同名的方法test,java中称为方法的重载
。
【答案】AB
38 / 46
10.下面哪个说法正确( )?
A)如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字。
B)如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。
C)如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。
D)接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。
【答
案】ABCD
三、填空题(本大题10小题,每小题1分,共10分)
1. 创建类的对象时,使用运算符___________给对象分配内存空间。
2. 定义类的构造方法不能有返回值类型,其名称与_____名相同。
3. Java语言中关键字_____表示双精度类型。
4. 若有定义:float b={1.1f, 3.5f, 6.8f}。,则()的值是_______。
5.若有类定义:
class B extends A{
…
}
则类B是类A的______。
6.接口中的成员只有静态常量和______。
7. 在子类中使用关键字_______做前缀可调用被子类覆盖的父类中的方法。
8. 关键字______用于导入包中的类到程序中,供程序中使用。
9. Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_____块来捕获和处理异
常。
10. 程序中实现多线程的方法有两种:继承_____类和实现Runnable接口。
【答案】
2.类 4. 3 5.子类 6. 抽象方法
39 / 46
8. import 9. catch
10. Thread
四、阅读程序,回答问题(本大题5小题,每小题5分,共25分)
1. (5分)
1: public class Output1 {
2: public static void main(String arge[]) {
3: int i=0。
4: for ( char ch = 97。 ch<113。 ch++,i++) {
5: if( i % 8 == 0 )
6: n(" ")。
7: ("t" +ch)。
8: }
9: }
10: }
(1)程序第5、6行的if语句的功能是什么? (2分) (2)程序输出的结果有几行?(3分)
【答案】 (1)每打印8个字符,则换行。(2)输出的结果有2行。
2. (5分)
1: import 。
2:
3: public class SortArray {
4: public static void main(String args[]) {
5: String[] str = {"size", "abs","length","class"}。
6: (str)。
7: for (int i=0。 i<。 i++)
8: (str[i]+" ")。
9: }
10: }
(1)写出程序运行后的结果。(2分)
40 / 46
(2)方法调用str[0].length()的返回结果是多少?(3分)
【答案】(1) abs class length size (2) 4
3. (5分)
1: //
2: import 。
3: import .*。
4: import .*。
5:
6: public class TestKeyListener extends Applet {
7:
8: Color clr。
9:
10: public void init() {
11:
12: addKeyListener(
13: new KeyAdapter() {
14: public void keyTyped( KeyEvent e ) {
15: if(Char()=='r'||Char()=='R')
16: clr=。
17: else
if(Char()=='g'||Char()=='G')
18: clr=。
19: else
if(Char()=='b'||Char()=='B')
20: clr=。
21: else
22: clr=。
23: setBackground(clr)。
24: }
25: })。
41 / 46
26: }
27: }
(1)程序第15、16行实现的功能是什么?(2分)
(2)编译该程序,并编写嵌入该程序字节码文件的网页后,通过支持java的浏览器打开网页。如果敲击键盘的
‘b’键,有什么结果?(3分)
【答案】(1) 如果敲击键盘的‘r’键,则将颜色对象的值赋为红色。(2) 小程序的背景颜色变为兰色。
4.定义类A和类B如下. (5分)
class A
{
int a=1。
double d=2.0。
void show( )
{
n("Class A: a="+a +"td="+d)。
}
}
class B extends A
{
float a=3.0f。
String d="Java program."。
void show( )
{
( )。
n("Class B: a="+a +"td="+d)。
}
42 / 46
}
(1) 若在应用程序的main方法中有以下语句:
A a=new A()。
()。
则输出的结果如何?(2分)
(2) 若在应用程序的main方法中定义类B的对象b:
A b=new B()。
()。
则输出的结果如何?(3分)
【答案】
(1) Class A: a=1 d=2.0
(2) Class A: a=1 d=2.0
Class B: a=3.0 d=Java program.
5. (5分)
import .*。
public class W {
static String[] s={"甲","乙","丙","丁"}。
public static void main(String[] args) {
Stack stk=new Stack()。
for(int i=0。i<。i++) {
(s[i]+" ")。
}
int k=0。
while(k<3) {
(())。
k++。
}
}
}
43 / 46
(1)堆栈的操作规则如何?(2分) (2)写出程序运行后的结果。(3分)
【答案】 (1) 先进后出 (2) 丁 丙 乙
五、根据题目要求编写程序(本大题2小题,第1小题5分,第2小题10分,共15分)
1.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:分别描述一张牌
的牌面值(如:A、K、Q、J、10、9、…、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”和“方块”
)。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法
getFace(),得到扑克牌的牌面值。 定义protected访问权限的方法getSuit(),得到扑克牌的花色。 定义方法
toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。
【答案】1.5分
class Card {
private String face。
private String suit。
public Card( String f, String s ) {
face = f。
suit = s。
}
protected String getSuit(){
44 / 46
return suit。
}
protected String getFace(){
return face。
}
public String toString(){
return face + " of " + suit。
}
}
2.若应用程序的main方法中,定义字符串数组f和s: 分别表示扑克牌的牌面值和花色;定义52个元素的Card类
型数组deck,用来存放4个花色的52张牌。如下所示。
String f[] = { "A", "2", "3",
"4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K" }。
String s[] =
{ "黑桃", "红桃", "梅花", "方块" }。
Card deck = new Card[ 52 ]。
(1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、…、K;然后
是红桃花色的A、2、3、…、K;梅花花色的A、2、3、…、K;方块花色的A、2、3、…、K。请写出实现上述功
能的程序段。
【答案】 (1)5分
for ( int i = 0。 i < 。 i++ ) {
45 / 46
deck[ i ] = new Card( faces[ i % 13 ], suits[ i / 13 ] )。
}
(2)请编写模拟洗牌的程序段,即把数组deck中的扑克牌随机打乱存放顺序。
【答案】(2)5分
for ( int first= 0。 first< 。 first++ ) {
int second = ( int ) ( () * 52 )。
Card temp = deck[ first]。
deck[ first] = deck[ second ]。
deck[ second ] = temp。
46 / 46
版权声明:本文标题:JAVA语言程序设计复习题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702769631h430141.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论