《Java 程序设计》模拟试题四一、选择题(每小题2分,共20分)1. 以下哪个是合法的标识符? ( C )A. 7starB. elseC. my$D. super2. 设有对象obj 具有属性a 则访问该属性的方法为( A )。
A. obj.aB. a.obj()C. a.objD. obj.a()3. 下列关于关键字this 和super 的说法正确的是( C )。
A. this 是调用父类的方法和变量B. super 是调用本类中的方法C. super 是调用父类的方法和变量D. 没有区别4. 以下关于重载(overload )的定义哪个正确?( B )A.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输出参数。
B.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输入参数。
C.在一个类中,定义了多个具有相同名字的方法,并且这些方法有相同的输入参数。
D.在一个方法体中定义了多行代码。
5. 有如下代码段:int i=2; int j=3;if((i==2)||(j++==3)) i++;if((j==4)||(i++==3)) j++;System.out.printf("i="+i+"j="+j);该程序运行的结果为: ( C )。
A .i=4,j=4 B.i=3,j=5 C .i=4,j=5 D.以上都不是 6. Java 程序用以下哪个命令可编译源文件? ( D )A. JavaB. appletviewerC. JavadocD. Javac7. 以下说法正确的个数为 ( B )。
①构造方法中this 语句必须放在第一句; ②构造方法中super 语句不一定放在第一句; ③final 修饰的变量只能赋值一次;④static 修饰的变量在该对象的一个实例中被修改,在另一个实例中也可以取得该变量的新值。
A. 1B. 2C. 3D. 48. 下列修饰词,可以用来定义接口中方法的为 ( C )。
A. privateB. protectedC. publicD.以上都不是 9. 关于继承的说法正确的是( B )。
A.子类将继承父类所有的属性和方法。
B.子类将继承父类的非私有属性和方法。
C.子类只继承父类public 方法和属性D.子类只继承父类的方法,而不继承属性10. 下列关于Java 程序中数组的使用说法正确的是( A )。
A.数组必须在使用前定义B.同一个数组中的元素类型必须不同C.数组是一种特殊的变量不需在使用前声明D.数组的元素不可以是数组评分标准:本题为单项选择题,每小题2分,共10道小题,共20分;每小题选对给2分,选错、多选、不选不给分也不扣分。
二、填空题(每空1分,共10分)1. Java 的特点有: 简单性、可靠性和安全性、面向对象、平台无关和解释执行、分布式、多线程等 (不少于4条)。
评分标准:只要写出四条即可给1分,不写或少于四条不给分,也不扣分。
2. Java 的注释有以下三种: 单行注释(//)、多行注释(/* */)、文档注释(/** */) 。
评分标准:本题答案不唯一,只要写出3条即可给1分,不写或少于3不给分,也不扣分。
备注:不写汉字,只写括号中的符号也算正确,或者汉字和符号的组合也对。
3. 建立文件”file.txt ”的字节输入流的语句是 FileInputStream in=new FileInputStream (”file.txt ”) 。
评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。
备注:本题答案不唯一,只要是表达出使用字节流类进行文件的字节输入即可,变量名可以不同,只要符合标识符的定义即可。
4. Java 中所有类都是类 Object 的子类。
评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。
备注:首字母必须大写,否则算错不给分,写对象也算正确。
5. Throwable 的两个直接子类是 Error 、 Exception ,在方法头部声明方法可能会抛出异常使用 throws 关键字。
评分标准:本题正确给3分,不正确或不写、错误不给分也不扣分。
备注:Error 、Exception 的首字母必须大写,否则算错不给分;写出对应的汉语也算正确。
6. abastract 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类中定义。
final 方法是不能被当前类的子类重新定义的方法。
评分标准:本题正确给2分,不正确或不写、错误不给分也不扣分。
备注:写出对应的汉语也算正确,例如,抽象和最终。
7. 按照功能组织类和接口的名称空间称为 package 。
评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。
备注:写出对应的汉语也算正确,例如,包。
三、简答题(每小题5分,共20分)1. 有如下程序:Moveable.java 文件中有如下代码 interface Moveable{void move(int x,int y); void jump(int x, int y); }Monkey.java 中如下代码:class Monkey implements Moveable{ public void jump(int x,int y){System.out.printf(“I am jumping from %d to %d ”,x,y); }专业班级: 姓名: 学号:…………………………密………………………………封………………………………线…………………………}Monkey.Java能否正确编译?能或不能的原因是什么?答案要点:(1)不能正确编译。
(1分)(2)因为Moveable为接口,定义了2个抽象方法;而Monkey类在声明时要实现Moveable接口,所以应该要实现该接口中所有的抽象方法。
而在Monkey类中只实现了其中一个抽象方法,所以不能正确编译。
(4分)评分标准:按要点给分。
备注:本题答案不唯一,只要意思表达正确即可给满分,有部分语法错误或语句不通顺也不扣分。
2.什么是方法重载和重定义(覆盖)?答案要点:(1)重载发生在同一个类内,要求两个或以上的方法其方法签名(函数名,返回类型,参数个数、顺序、类型)不完全相同。
(2分)(2)覆盖发生在在父子类之间,在子类中重写父类中的方法,要求方法签名和父类中的方法完全一致,且访问权限要不小于父类的方法。
(3分)评分标准:按要点给分。
备注:本题答案不唯一,只要意思表达正确即可给满分,有部分语法错误或语句不通顺也不扣分。
3.简述Java语言实现平台无关(跨平台)性的原理。
答案要点:(1)java的平台无关性是指用Java编写的程序编译后不用修改就可以在不同的平台上运行(2分)(2)之所以能平台无关,主要是通过Java虚拟机实现的,编译器将源代码生成字节码文件,由解释器解释成与操作系统有关的目标代码然后再执行。
(3分)评分标准:按要点给分。
备注:本题答案不唯一,只要意思表达正确即可给满分,有部分语法错误或语句不通顺也不扣分。
4.谈谈final, finally的区别。
答案要点:(1)final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为 abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
(3分)(2)finally-再异常处理时提供 finally 块来执行任何清除操作。
如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
(2分)评分标准:按要点给分。
备注:本题答案不唯一,只要意思表达正确即可给满分,有部分语法错误或语句不通顺也不扣分。
四、程序阅读题(每题10分,共20分)1.写出以下程序的运行结果。
class Egg{ protected class Yolk //定义内部类Yolk{ Public Yolk() //内部类构造方法{System.out.println("我是内部类Yolk");}}private Yolk y;//定义实例变量ypublic Egg() //定义外部类Egg的构造方法{System.out.println("下个Yolk鸡蛋");y=new Yolk();}}public class BigEgg extends Egg{ public class Yolk{public Yolk(){ System.out.println("下个大鸡蛋");}}public static void main(String []args){new BigEgg();}}结果为:答案要点:(1)下个Yolk鸡蛋(5分)(2)我是内部类Yolk(5分)评分标准:按要点给分。
备注:顺序颠倒扣3分,多写一个输出扣3分。
2.写出下列程序的运行结果。
public class A{ public static class Student{ static int count=0;String name;int number;public Student(String n1){ name = n1; count ++; number = count; }public void output() { System.out.println( + “number=”+ this.number); } }public static void main(String[] args){ A.Student s1 = new A.Student(“A”);s1.output();A.Student s2 = new A.Student(“B”);s2.output();}}结果为:答案要点:(1)A number=1(5分)(2)B number=2(5分)评分标准:按要点给分。
备注:顺序颠倒扣3分,其他情况酌情扣分。
五、编程题(每题15分,共30分)1、按以下要求编写程序:(1) 创建一个Rectangle类,添加width和height两个成员变量;(2) 在Rectangle中添加两种方法分别计算矩形的周长和面积;(3) 编程利用Rectangle输出一个矩形的周长和面积。
答案要点:class Rectangle//2分{float width,height;Rectangle(float width,float height)//2分{this.width=width;this.height=height;}float getPerimeter()//2分{return (width=height)*2;}float getArea()//2分{return width*height;}}class Test//2分{public static void main(String []args)//2分{Rectangle r=new Rectangle(10.6,52.8);//1分r.getPerimeter();//1分r.getArea();//1分}}评分标准:按要点给分。