《Java面向对象程序设计》模拟试题(A卷)
一、判断题(10’)
1.Java程序里,创建新的类对象用关键字new。
2.对象可以赋值,只要使用赋值号(等号)即可,
相当于生成了一个各属性与赋值对象相同的新对象。
3.有的类定义时可以不定义构造函数,所以构造函数不是必需的。
4.类及其属性、方法可以同时有一个以上的修饰符来修饰。
5.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。
6.Final类中的属性和方法都必须被final修饰符修饰。
7.final最终类不能派生子类,最终方法不能被覆盖。
8.子类要调用父类的方法,必须使用super关键字。
9.一个Java类可以有多个父类。
10.方法覆盖必须要方法原型相同,可以不需要继承。
二、选择题 (20’)
1、每个类都定义有( ),以便初始化其成员变量。
A.方法 B.main()方法 C.构造方法 D.对象
2、关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
3、关于被保护访问控制符protected修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
4、下列关于修饰符混用的说法,错误的是( )
A.abstract不能与final并列修饰同一个类 B.abstract类中不可以有private的成员
C.abstract方法必须在abstract类中 D.static方法中能处理非static的属性
5、 ( )修饰符允许对类成员的访问不依赖于该类的任何对象
A、abstract B、static C、return D、public
6、以下标识符中哪项是不合法的( )
A、BigMeaninglessName B、$int C、1s D、$1
7、main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )
A、public void static main(String a[]) B、public static void main(String[ ] args)
C、 static public void main(String[ ] a) D、public void main(String arg[ ])
8、执行完以下代码int [ ] x = new int[25];后,以下哪项说明是正确的( )
A、x[24]为0 B、x[24]未定义 C、x[25]为0 D、x[0]为空
9、以下代码段执行后的输出结果为() int x=3; int y=10; System.out.println(y%x);
A、0 B、1 C、2 D、3
10、以下哪个表达式是不合法的( )
A、String x=”Hello”; int y=9; x+=y;
B、String x=”Hello”; int y=9; if(x= =y) { }
C、String x=”Hello”; int y=9; x=x+y;
D、String x=null; int y= (x!=null)&&(x.length()>0) ? x.length() : 0
三、改错题(20’) 判断下面的程序片断是否正确。若有错,指出错在哪里并改正;若正确,打“√”。
1、class MyClass {
int var=100;
static int getVar(int var) {
return var;
}
}
2、public class MyClass {
int data;
void MyClass(int data) {
data=data;
}
}
3、public class MyMain {
public static void main(String args[ ]) {
System.out.println(MyClass1.data);
}
}
static class MyClass1 {
int data=10;
}
4、class IamAbstract {
final int f=0;
double d;
abstract void method();
}
5、class Parent {
int mine;
}
class Child extends Parent {
int getMine() {
return mine;
}
}
四、程序阅读(20’)
1、阅读以下程序,输出结果为 。
class Q1{
public static void main(String args[ ]){
double d=1.23;
Dec dec=new Dec( );
dec.decrement(d);
System.out.println(d);
}
classs Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;
}
}
2、以下程序的输出结果为 。
public class Animal{
public void cry(){
System.out.println("动物叫 。。。。");
}
}
public class Cat extends Animal{
public void cry(){
System.out.println("喵喵叫。。。。");
}
public void catchMouse(){
System.out.println("抓老鼠。。。。");
}
}
public class Dog extends Animal{
public void cry(){
System.out.println("汪汪叫。。。。");
}
public void lookDoor(){
System.out.println("看门的。。。。");
}
}
public class Start{
public static void main(String[] args){
Animal a1 = new Dog();
a1.cry();
Dog d1 = (Dog)a1;
d1.lookDoor();
a1 = new Cat();
a1.cry();
Cat c1 = (Cat)a1;
c1.catchMouse();
}
}
3、以下程序段的输出结果为 。
int x=0,y=4, z=5;
if (x>2){
if (y<5){
System.out.println(“Message one”);
}
else {
System.out.println(“Message two”);
}
}
else if(z>5){
System.out.println(“Message three”);
}
else {
System.out.println(“Message four”);
}
4、以下程序段的输出结果为 。
int j=2;
switch ( j ) {
case 2: System.out.print(“Value is two.”);
case 2+1 : System.out.println(“Value is three.”); break;
default: System.out.println(“value is “+j); break;
}
五、问答题(10’)
1. Vector,ArrayList,LinkedList的区别?
答:
六、程序设计(上机操作)
打印出100以下的素数(20’)
七、附加题:在Java中从键盘上输入一串有“|”间隔的人物的名字可以是有重复的人物名字,输出的结果是有“|”由“&”替换,有重复的人物名字的“|”不进行替换。(20’)(上机操作)
就如:
输入时:孙悟空|猪八戒|唐僧|红孩儿|牛魔王|唐僧。
输出结果:孙悟空&猪八戒&唐僧&红孩儿&牛魔王|唐僧。