计算机科学与技术
面向对象程序设计 复习资料2
发布者:陈雪姣发布时间:2023-10-20 21:42:00阅读次数:121次
面向对象程序设计复习资料
(一)单项选择题
1.Java是一门( )语言。
A. 机器 B. 汇编 C. 面向过程的高级 D. 面向对象的高级
2. 具有相同属性和服务的一组对象的共同模板称为( )。
A. 程序 B. 类 C. 代码 D. 概念
3.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为( )。
A. private B. protected C. public D. static
4.Java语言中的switch语句属于( )语句。
A. 数据输入 B. 数据输出 C. 分支处理 D. 循环控制
5.在类的定义中,实现接口的子句所使用的关键字为( )。
A. extends B. implements C. public D. abstract
6.在派生类的定义中,继承父类的子句所使用的关键字为( )。
A. extends B. implements C. public D. abstract
7.下列能表示栈(stack)s1长度的是( )。
A.s1.length() B.s1.length C.s1.size D.s1.size()
8.下面的异常( )为文件没有找到异常。
A. NullPointerException B. FileNotFoundException
C. ArrayIndexOutOfBoundsException D. IOException
9.下列不是InputStream 类的子类的是( )。
A. FileInputStream B. ObjectInputStream
C、 FileOutputStream D. DataInputStream
10.进行文件输入输出操作时,最常用的系统包是( )。
A. java.net B. java.io C. java.util D. java.awt
11.类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个( )。
A. 产品 B. 元素 C. 成分 D. 实例
12.使用JDK运行Java程序时使用的命令是( )。
A. java B. javac C. appletviewer D. javadoc
13.类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个( )。
A. 产品 B. 元素 C. 成分 D. 实例
14.在程序中声明包的语句关键字为( )。
A. volatile B. pack C. import D. package
15.假定一个字符串对象x的值为"abcdef\n",则x.substring(0,3)的值为( )。
A. "003" B. "bcd" C. "f\n" D. "abc"
16. 把对象的属性和服务组合成一个独立的整体,尽可能隐蔽其内部的细节,这称为对象的( )。
A. 封装性 B. 多态性 C. 继承性 D. 开放性
17.具有( )访问权限的成员能够被本类和其他任何类中的成员所访问。
A. public B. protectd C. private D. 缺省
18.下列说法不正确的是( )
A.一个集合代表一组对象,这些对象为它的元素
B.Collection为集合层级的根接口,Java平台不提供这个接口任何直接的实现C.Set、List、Map都继承于Collection
D.SortedSet继承于Set
19.下面的关键字( )与异常处理语句的语法格式无关。
A. finally B. catch C. try D. switch
20.下面( )既可以作为流的数据源,又可以作为流的目的地。
A. 键盘 B. 磁盘文件 C. 显示器 D. 扫描仪
21.Java语言的主要特点不包括( )。
A. 面向对象 B. 自动垃圾回收 C. 只能处理文件 D. 可移植性
22.包含主方法的类被称为主类,主方法的存储控制属性应定义为( )。
A. final B. abstract C. short D. static
23.在类的定义中,若需要把一个属性或方法定义为类成员,而不是实例成员,则使用的修饰符为( )。
A. const B. final C. static D. public
24.在类定义首部的语法格式中,( )不能作为其中的修饰符。
A. public B. protectd C. extends D. abstract
25.下面的关键字( )与异常处理的功能无关。
A. throw B. throws C. import D. finally
26.Java中有3个标准输入/输出流,下面的( )不包含在内。
A. System.in B. System.out C. System.err D. System.cur
27.机器语言中的指令编码为( )编码。
A. 二进制 B. 符号 C. 十进制 D. 数值
28.在Java程序中包含主方法的类被称为主类,其中主方法名为( )。
A. Main B. main C. void D. args
29.在程序中声明包的语句关键字为( )。
A. volatile B. pack C. import D. package
30. 具有( )访问权限的成员只能被本类中的成员所访问。
A. public B. protectd C. private D. 缺省
31.下面的( )属于检查型异常。
A. 数组越界 B. 除零 C. 空值操作 D. IO异常
32.Java语言中转义字符'\n'代表( )。
A. 回车 B. 换行 C. 换页 D. 空格
33.对象是构成现实世界的一个独立单位,它具有自己的静态特征和( )特征。B
A. 颜色 B. 动态 C. 状态 D. 重量
34.在类的定义中,若需要把一个成员标识符定义为常量,则使用的修饰符为( )。
A. const B. final C. static D. class
35.在一个方法的方法头(声明)中,向调用它的上一层方法抛出异常的子句关键字为( )。
A. catch B. row C. throws D. finally
36.有关Set说法错误的是( )。
A.Set是一个不能包含重复元素的集合
B.Set继承于Collection接口
C.Set里的元素排列是有序的,因此可以使用数字下标访问
D.Set接口是对数学的“集合”进行抽象建模
37.下面的关键字( )与异常处理语句的语法格式无关。
A. throw B. void C. throws D. try
(二)判断题
1.可以把一个派生类的对象直接赋给上层父类的对象。
2.在Java语言中,一个类的定义既能包含成员变量,又能包含成员方法。
3.在一个抽象类中,不允许包含成员变量和构造方法。
4. Set是一个不能包含重复元素的集合。
5.定义接口使用的语句关键字为interface,一个接口不能够继承其他任何接口。
6.数组的长度不能够被改变,而向量类(Vector)对象的长度可以被改变。
7.在对文件进行的输入/输出(I/O)方法的调用中,当遇到错误时通常不会抛出IOException异常。
8.Java.io包中的InputStream及其子类专门用于从二进制数据文件中读出数据。
9.Applet程序是由Java源代码构成的,并被编译为一个class文件。
10.在Java程序中,用户创建的线程类不必继承java.lang.Thread类,也不必实现java.lang.Runnable接口。
11.在派生类中不能定义与父类中具有相同名称和参数表的方法。
12.派生类可以直接访问从父类中继承下来的所有成员。
13.向量类Vector中的set(i,x)方法不能够把向量中下标为i的元素值修改为x的值。
14. List是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引去访问。
15.当利用一个方法进行文件访问操作可能生成一个IOException异常时,该方法可以在方法头声明中抛出该异常,也可以采用try…catch块捕获并处理该异常。
16.JDBC隔离了Java与不同数据库之间的对话,使得 Java程序无须考虑不同数据库管理系统平台之间的差异。
17.一个新类可以从现有的类中派生,这个过程称为类继承。
18.派生类可以直接访问从父类中继承下来的所有成员变量及方法。
19.在一个抽象类中,也可以包含成员变量和构造方法。
20. 所有集合类都位于java.util包下。
21.接口中的所有方法都是抽象的,每个方法都只有方法声明,而没有方法体。
22.向量类Vector中的get(i)方法不能够返回向量中下标为i的元素值。
23.在Java中将信息的输入与输出过程抽象为输入/输出流。输入是指数据流入程序,输出是指数据从程序流出。
24.java.io包中提供的ObjectOutputStream类不能够把对象信息存储到文件中。
25. 如果在派生类的构造方法的定义中没有明确调用父类的构造方法,则系统在执行派生类的构造方法时也不会隐含调用父类的无参构造方法。
26. Map接口是键-值对象,即Map中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。key不能重复,value可以重复。
27.在Java程序中,用户创建的线程类不能继承java.lang.Thread类。
28. 根据已有类继承定义出的新类称为已有类的派生类(子类),已有类称为超类(父类)。
29. Java不支持类的多重继承,只支持类的单继承。
30.在Java语言中,一个类不能被定义在另一个类之中,类与类之间没有包含关系。
31.接口中的所有成员方法只默认具有public属性,而没有abstract属性。
32.向量类Vector中的add(x)方法能够把x元素加入到调用对象中所有元素的开始位置。
33.输入流类(InputStream)和输出流类(OutputStream)是用来处理字节流的抽象基类。
34. 集合框架是为表示和操作集合而规定的一种统一的标准体系结构,包含三大块内容:接口、实现和算法。
35.在Java程序中,只能创建单个线程,不能创建多个线程。
(三)程序分析题
1. public class XXK2 {
private int a;
public XXK2() {a=2;}
public XXK2(int aa) {a=aa;}
public double f1() {
return Math.pow(a,3);
}
public static void main(String[] args) {
XXK2 x=new XXK2(), y=new XXK2(4);
System.out.println(x.f1()+", "+y.f1());
}
}
结果为:
2. interface Shape {
double area();
double girth();
}
class Rectangle implements Shape {
int a,b;
public Rectangle(int aa, int bb) {a=aa; b=bb;}
public double area() {return a*b;}
public double girth() {return 2*(a+b);}
}
public class XXK3 {
public static void main(String[] args) {
Shape x;
x=new Rectangle(3,4);
System.out.println(x.area()+", "+x.girth());
}
}
结果为:
3. public class XXK3 {
public static void main(String[] args) {
int [][]a=new int[2][3];
int i,j;
for(i=0; i<a.length; i++)
for(j=0; j<a[i].length; j++)
a[i][j]=(i+1)*(j+1);
System.out.println(a[0][2]+a[1][2]);
}
}
结果为:
4. public class SetTest {
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
boolean b1 = hs.add("a");
hs.add("b");
hs.add("c");
hs.add("d");
hs.add("d");
boolean b2 = hs.add("a");
System.out.println("size="+hs.size());
}
}
结果为:
5. public class XXK {
public static void main(String[] args) {
int i=1, s=0;
while(true) {
if(i%2==0) s+=i;
if(i++>=6) break;
}
System.out.println("s="+s);
}
}
结果为:
6. class Rectangle {
private int a,b;
public Rectangle(int aa, int bb) {a=aa; b=bb;}
public int area() {return a*b;}
public int girth() {return 2*(a+b);}
}
public class XXK3 extends Rectangle {
private int c;
public XXK3(int aa, int bb, int cc) {super(aa,bb); c=cc;}
public int volume() {return area()*c;}
public int arrisLength() {return 2*girth()+4*c;}
public static void main(String[] args) {
XXK3 x=new XXK3(1,3,5);
int y1=x.volume();
int y2=x.arrisLength();
System.out.println(y1+", "+y2);
}
}
结果为:
7. public class XXK4 {
public static void main(String[] args) {
int [][]a={{2,5,8},{3,6,9},{4,5,6}};
int []b=new int[3];
int i,j;
for(i=0; i<a.length; i++)
for(j=0; j<a[i].length; j++)
b[i]+=a[i][j];
for(i=0; i<b.length; i++)
System.out.print(b[i]+" ");
}
}
结果为:
8.Public class Test {
Public static void main(String[] args) {
Vector teamList = new Vector();
teamList.add("Zhang");
teamList.add("Li");
teamList.add("Wang");
teamList.remove(0);
teamList.remove(0);
System.out.println(teamList.size()+","+teamList.get(0));
}
}
结果为:
9. public class XXK {
public static void main(String[] args) {
int i=0, s=0;
while(true) {
if(++i%3==0) s+=i;
if(s>10) break;
}
System.out.println("s="+s);
}
}
结果为:
10. abstract class Shape {
int a,b;
public Shape(int aa, int bb) {a=aa; b=bb;}
abstract public double area();
}
class Rectangle extends Shape {
public Rectangle(int aa, int bb) {super(aa,bb);}
public double area() {return a*b;}
}
class Triangle extends Shape {
public Triangle(int aa, int bb) {super(aa,bb);}
public double area() {return a*b/2;}
}
public class XXK3 {
public static void main(String[] args) {
Shape x,y;
x=new Rectangle(5,10);
y=new Triangle(6,8);
System.out.println(x.area()+", "+y.area());
}
}
结果为:
11. public class XXK2 {
private int a,b;
public XXK2(int aa, int bb) {a=aa; b=bb;}
public int f1(int x) {
if(x>10) return a+x;
else return b+x;
}
public static void main(String[] args) {
XXK2 x=new XXK2(3,6);
int y=x.f1(8);
System.out.println("y="+y);
}
}
结果为:
12. class ABC {
private int []a;
public ABC(int []aa) {a=aa;}
public int maxValue() {
int max=a[0];
for(int i=1; i<a.length; i++)
if(a[i]>max) max=a[i];
return max;
}
}
public class XXK5 {
public static void main(String[] args) {
int []a={13,25,16,38,56,30};
ABC x=new ABC(a);
int max=x.maxValue();
System.out.println("max: "+max);
}
}
结果为:
13. public class XXK {
public static void main(String[] args) {
int c0=0, c1=0, c2=0;
for(int x=1; x<=8; x++) {
switch(x%3) {
case 0: c0++; break;
case 1: c1++; break;
case 2: c2++; break;
}
}
System.out.println("c0,c1,c2="+c0+","+c1+","+c2);
}
}
结果为:
14. public class XXK4 {
public static void main(String[] args) {
int [][]a={{2,5,6},{3,6,5},{4,5,7}};
int []b=new int[3];
int i,j;
for(i=0; i<a.length; i++)
for(j=0; j<a[i].length; j++)
b[i]+=a[i][j];
for(i=0; i<b.length; i++)
System.out.print(b[i]+" ");
}
}
结果为:
15. public class MapTest {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("zhao", "100");
map.put("qian", "85");
map.put("sun", "30");
map.put("li", "99");
System.out.println("size:"+map.size());
System.out.println("zhao:"+map.containsKey("zhao"));
System.out.println("zhao:"+map.get("zhao"));
}
}
结果为:
参考答案
(供参考)
(一)单选题,在括号内填写正确的选项编号
1. D 2. B 3. C 4. C 5. B
6. A 7. D 8. B 9. C 10. B
11. D 12. A 13. D 14. D 15. D
16. A 17. A 18. C 19. D 20. B
21. C 22. D 23. C 24. B 25. C
26. D 27. A 28. B 29. D 30. C
31. D 32. B 33. B 34. B 35. C
36. C 37. B
(二)判断题,
1. √(对) 2. √(对) 3. ×(错) 4. √(对) 5. ×(错)
6. √(对) 7. ×(错) 8. √(对) 9. √(对) 10. ×(错)
11. ×(错) 12. ×(错) 13. ×(错) 14. √(对) 15. √(对)
16. √(对) 17. √(对) 18. ×(错) 19. √(对) 20. √(对)
21. √(对) 22. ×(错) 23. √(对) 24. ×(错) 25. ×(错)
26. √(对) 27. ×(错) 28. √(对) 29. √(对) 30. ×(错)
31. ×(错) 32. ×(错) 33. √(对) 34. √(对) 35. ×(错)
(三)程序分析题
评分标准:根据答案正确程度酌情给分。
1. 8.0, 64.0
2. 12.0, 14.0
3. 9
4. size=4
5. s=12
6. 15, 36
7. 15 18 15
8. 1,Wang
9. s=18
10. 50.0, 24.0
11. y=14
12. max: 56
13. c0,c1,c2=2,3,3
14. 13 14 16
15.
size:4
zhao:true
zhao:100