文档库 最新最全的文档下载
当前位置:文档库 › Java面向对象模拟试题1

Java面向对象模拟试题1

Java面向对象模拟试题1
Java面向对象模拟试题1

一、判断题(正确的描述打钩,错误的打叉,每题1分,共10分)

1 抽象类中不可以有非抽象的方法。(错)

2 如果将一个对象强制类型转换为一个不兼容的类型,将引发NullPointerException

异常。(错)

3 Java中Object类是最顶层的类。(对)

4 程序在编译通过以后,仍然可能出现运行时错误和逻辑错误。(对)

5 可以通过javac来运行一个Java Application。(错)

6 可以在子类构造函数中通过this关键字调用基类的构造函数。(错)

7 Java语言是IBM公司设计的一种面向对象程序设计语言。(错)

8 一个Unicode字符占4个字节。(错)

9 在循环语句中,使用continue;语句可以跳出循环。(错)

10 在Java Application中如果没有定义main()方法,则程序不能编译。(错)

二、简答题(请将答案写到答题纸上,注明题号。每题3分,共30分)

1 请看以下代码:

package mytest;

public class Main {

public static void main(String[] args) {

System.out.println(new A());

}

}

class A

{

}

Java在运行上述代码时输出一个很奇异的结果:

mytest.A@60aeb0

尝试解释一下可能的原因.

点评:

本题的关键在于虽然类A没有定义任何方法,但它隐含着从基类Object中继承了toString()方法。答案必须点出这一结果是执行toString()方法得到的。

2 什么叫多态?你是如何理解多态的?请设计一个简单的示例,展示多态的用法。

点评:

几乎所有的Java教材都要介绍多态的概念,但只有能用自己的语言说清楚,并能自己设计一个典型实例展示多态特性的,才算是真正弄明白了。

从试卷中发现,不少同学弄混了方法重载与方法覆盖,认为“方法重载”就是多态。

3 在Java GUI程序中,布局管理器是一个很重要的概念。谈谈你对这个概念的理解,并进而回答以下问题:

如果要你开发出一个Windows资源管理器(图 1),你将如何应用合适的“布局管理器”来实现其界面?

图 1 Windows 7中的资源管理器

请指明你在图 1中的哪部分应用哪种布局管理器。

4 int和Integer都可以代表一个整数,这两者在使用上有什么区别吗?为什么JDK中要设计两个数据类型来表示同一种数据?

5 Java Application的程序入口点为main()函数,其声明如下:

public static void main (String[] args)

请解释一下为何main()函数是公有的和静态的?

6 抽象类与接口都不能直接用来创建对象,那么,这两者什么用?彼此之间又有何区别?

你认为在哪种场合应该用抽象类,哪种场合应该用接口?在JDK中你能找到相应的实例吗?如果能找得到,请分析一下JDK的设计者为何将它们设计为“抽象类(或接口)”。

7 如何判断函数构成重载关系?挑出以下函数中不构成重载关系的函数,指明它违反了哪个判断准则。

(1)void myFunc();

(2)int myFunc(int x,int y);

(3)int myFunc(string str, string str2);

(4)string myFunc(int x, int y);

另外,你还记得JDK中有哪个类拥有重载的方法吗?列举一两个。

8 Swing和AWT都可以用于设计GUI(图形用户界面)程序,这两者有何区别?

你还用过其他的编程语言或开发工具设计GUI程序吗?如果让它们与Java

进行对比,你觉得使用Java设计GUI程序的优点在哪,缺点在哪?

9 在面向对象程序中,实现代码复用主要有两种方式:继承和组合。

请设计两段示例代码,分别展示出Java实现这两种方式的代码框架。

如果在某个实际开发场景中这两种方式都可用,你认为应该优先选择哪一种?原因?

10 各种类型的几何图形都有自己的面积计算公式,但在一个CAD(计算机辅助设计)软件中,图形的种类非常多,如果程序需要计算出任何一种图形的面积,最简单的想法是使用条件判断语句根据图形类型来选择相应的计算公式。然而,这种方法不太好,可能会导致嵌套层次很深的条件判断语句。另外,如果软件要扩充功能以支持新的图形种类,则又不得不修改调用不同公式计算图形面积的代码。

在学习了面向对象技术之后,你能对上述问题给出一个较好解决方案来吗?

请以计算圆形、矩形和三角形三种几何图形的面积为例,列出关键代码或者绘出UML图来展示你的方案。

三阅读程序题(每题3分,共12分)

说明:

请仔细阅读左栏的程序代码,将程序运行结果写在“运行结果”一栏。

程序一

public class Test {

public static void main (String[] args) {

String s1=new String("Hello");

String s2="Hello";

String s3="Hello";

System.out.println(s1==s2);

System.out.println(s1.equals(s2));

System.out.println(s2==s3);

System.out.println(s2.equals(s3));

String s4=s1;

System.out.println(s1==s4);

System.out.println(s1.equals(s4));

}

}

运行结果

false

true

true

true

true

true

程序二

public class Test {

private static void printArray(int[] arr) { for(int i=0;i< arr.length;i++)

System.out.print(arr[i]+",");

System.out.println("\n");

}

private static void changeValue(int value) { value*=2;

}

private static void changeValue(int[] arr) { for(int i=0;i

arr[i]*=2;

}

public static void main (String[] args) {

int[] arr={1,2,3,4,5};

changeValue(arr[0]);

printArray(arr);

changeValue(arr);

printArray(arr);

}

}

运行结果

1,2,3,4,5,

2,4,6,8,10,

程序三

class MyException extends Exception {

public MyException(String message) {

super(message);

}

}

public class Test {

private static void fun1() throws MyException {

throw new MyException("An MyException object is thrown in fun1()."); }

private static void fun2() throws MyException {

try {

fun1();

}

catch(NullPointerException ex) {

System.out.println("NullPointerException:

"+ex.getMessage());

}

finally {

System.out.println("Go through finally code in fun2()."); }

}

public static void main (String[] args) {

try {

fun2();

}

catch(MyException ex) {

System.out.println("MyException:"+ex.getMessage());

}

catch(Exception ex) {

System.out.println("Exception:"+ex.getMessage());

}

}

}

运行结果

Go through finally code in fun2().

catch MyException object. Message:An MyException object is thrown in fun1().

四、程序改错题(每题3分,共12分)

说明:

下述程序中都包含着错误而不能通过编译。请在右栏指出程序错误的原因(可指明行号),并修改程序使其可以通过编译。

程序一

1 public class Main {

2 public static final A Aobj=null;

3 public static void main(String[] args) {

4 Aobj=new A();

5 }

6 }

7 class A{

8 }

更正

(1)去掉final

(2)

去掉main()函数中的赋值语句,定义语句改为:

public static final A Aobj=new A();

程序二

01 public class Test {

02 public static void main(String[] args) {

03 MyClass obj=new MyClass();

04 https://www.wendangku.net/doc/331381067.html,+=",World!";

05 System.out.println(https://www.wendangku.net/doc/331381067.html,);

06 }

07 }

08 class MyClass {

09 public String Info="Hello";

10 public MyClass(String Info)

11 {

12 https://www.wendangku.net/doc/331381067.html,=Info;

13 }

14 }

更正

尝试调用默认构造函数。但在用户指定了一个构造函数之后,不再允许直接调用默认构造函数。

更正:

Test obj=new Test("Hello");

程序三

01 abstract class Animal {

02 public abstract void saySomething() {

03 System.out.println("你想说什么就说吧!");

04 }

05 }

06 class Dog extends Animal {

07 public void saySomething() {

08 System.out.println("我现在有了第二职业:捉耗子!");

09 }

10 }

11 public class Test {

12 public static void main (String[] args) {

13 Animal ani=new Dog();

14 ani.saySomething();

15 }

16 }

更正

03句去掉abstract。

或者去掉Animal类saySomething方法中的所有实现代码。

六编程题(共36分)

说明:

(1)编程题共分为两组:简单编程题与综合编程题。简单编程题不要求写出完整的可运行的程序。综合编程题要求写出的程序必须是可以通过编译的完整的程序。

(2)请在试卷后所附的答题纸上书写程序代码,注明题号。

(3)代码要书写规范,卷面整洁。

点评:

1 简单编程题(每题4分,共20分)

(1)编写代码生成10个位于[50,100]区间的整数。

点评:我本意是要求学生生成随机数,但题目没有强调是随机数,所以,这道题简直就是送分题,难度大大降低。

(2)编写一个方法,接收一个整数数组作为参数,此方法会找出其最大值、最小值和平均值。

要求使用递归方法实现。

点评:这道题看上去简单,但其实难度不小。

问题的关键在于如何在方法的递归调用中暂存数据。这有两种方式实现:

第1种是将最大值、最小值和平均值作为类的字段,而将求值的递归函数作为类中的方法,在方法的每次递归调用中直接修改类中的相应字段。

第2种是创建一个新类,为其设计几个字段来代表最大值、最小值、总和,再提供一个公有方法用于得到平均值,然后将其作为递归函数的一个参数传送。

本题设计时应该将“平均值”改为求“数组元素的总和”,这样可以大大降低本题的难度,这是我设计试题时失误的地方。

(3)如果你设计的一个类只允许创建一个实例,你会如何设计它?写出类的框架代码。

如果希望你设计的类最多只能创建3个实例,你又该如何修改你的代码?

再扩充一下:

如果要求你设计一个类,在程序运行时才决定它最多能创建的实例个数,你打算如何设计它?

点评:

(4)为了按内容来比较属于同一类型的两个对象的“大小”,JDK中定义了一个Comparable接口用于供程序员自定义两个对象的比较规则,此接口声明如下:

public interface Comparable

{

int compareTo(Object other);

}

实现了此接口的两个对象(不妨称之为X和Y)可以相互比较:两对象X和Y相等,compareTo()方法返回0,X小于Y时compareTo()方法返回一个负数(通常设为-1),X大于Y时返回正数(通常设为1)。

请编写一个方法,接收一个Comparable对象数组作为参数,然后,此方法对此数组中的对象进行升序排列。

(5)从1到100的100个整数,以某种随机的方式进行排列,然将它们挨个放到一个整数数组中,此数组只能容纳99个整数,因此,必定会有一个整数会丢弃。

编写一个函数,接收一个包容99个整数的数组作为参数,找出被丢弃的哪个整数。

另外,你如何保证此函数接收的数组满足以下预设的条件?

1)数组包容99个整数

2)数组中的整数均在[1,100]的范围之内

3)数组中不包含两个相同的整数

如果函数接收到的数据不满足上述要求,你打算如何处理?写出你的处理策略。

点评:

这道题其实来自于软件公司的面试题。大多数同学都能顺利地回答第一问,虽然算法不优化。

第2问其实是了解一下学生是否知道如何实施“防卫型”编码,仅有少数学生给出了可行的实现方案。

2 综合编程题(16分)

以下为一棵有序二叉树:

图 2

请用Java实现上述数据结构,并编写一个函数按前序方式遍历此树的所有节点。

说明:

(1)程序必须为完整的可编译运行的Java Application。

(2)假设树中每个节点中都保存着一个整数,代表此节点所保存的数据。

(3)所谓前序遍历,是指从树的根节点开始,先输出根节点保存的数据,然后输出左子树根节点保存的数据,再输出右子树根节点保存的数据,由此不断递归,当访问完树中的所有节点时,遍历完成。

(4)在main()函数中编写示例代码创建上图中的二叉树,调用写好的函数,输出前序遍历结果:1,2,3,4,5

(5)请遵循Java软件工程师的代码开发规范:在你写的代码中加上注释,并注意变量和类的名字要望名知义,必要的缩进和空行等,让你的代码规范易读。

评分标准:

(1)能以面向对象的思想用Java实现“二叉有序树”这一数据结构(6分)

(2)能编写出前序遍历树的函数(6分)

(3)在main()中能写出示例代码完成所要求的工作:创建树和输出遍历结果(4分)

JAVA面向对象基础测试题

读书破万卷下笔如有神 JAVA面向对象基础测试题 提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。 1. 程序执行的结果是:()。 01 public class Point{ 02 int y = 7; 03 public void step(int y) { 04 y += y; 05 System.out.println(y); 06 读书破万卷下笔如有神 } 07 public static void main(String[] args) {

08 Point p = new Point(); 09 p.step(10); 10 } 11 } A.14 B.20 C.10 D.17 正确答案:B解析: 2. 读书破万卷下笔如有神 程序的执行结果是:()。 01 public class Question { 02 private int num; 03 public static void main(String [] args){ 04

Question q = new Question(); 05 q.num=13; 06 update(q); 07 System.out.println(q.num); 08 } 读书破万卷下笔如有神 09 public static void update(Question q){ 10 q.num=9; 11 } 12 } A.13 B.9 C.0 D.4

正确答案:B解析: 3. 程序执行的结果是:()。 01 public class Answer { 读书破万卷下笔如有神 02 public static void main(String[] args) { 03 int score = 20; 04 Answer ans= new Answer(); 05 ans.add(score); 06 System.out.println( main:score = + score); 07 } 08 void add(int score) { 09 System.out.println( add:score= + score++); 10

最新JAVA语言与面向对象程序设计课后习题答案

1 第1章面向对象软件开发概述 2 1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向3 过程的编程语言各两种。 4 答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更5 接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世6 界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。 7 面向过程的编程语言:C,Pascal, Foratn。 8 面向对象的编程语言:C++, Java,C#。 9 2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽10 象出对象的概念。 11 答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中12 的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有13 具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是14 类的一次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一15 个具体的电视机,如“我家那台电视机”。 16 3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学17 生”,试为这个对象设计状态与行为。 18

答:对象都具有状态和行为。 19 对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是20 变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的21 状态。 22 行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变23 对象的状态。 24 学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、25 入学成绩等; 26 学生的行为:自我介绍、入学注册、选课、参加比赛等。 27 4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生” 28 与对象“大学生”是什么关系? 29 答:对象间可能存在的关系有三种:包含、继承和关联。 30 对象“班级”与对象“学生”是包含关系。 31 对象“学生”与对象“大学生”是继承关系。 32 5.有人说“父母”和“子女”之间是继承的关系。这种说法是否正确?为什么? 33 答:“父母”和“子女”之间不是面向对象意义上的“继承”关系。因为这里的34

《Java面向对象编程》期末考试试卷A卷

第 1 页,共 1 页 学校 班级 学号 姓名______________________ ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆装◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆订◆◆◆◆◆◆◆◆◆◆◆◆◆线◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 淄博职业学院2013-2014学年第一学期 《Java 面向对象编程》期末考试试卷A 卷 使用班级:P12软件2班 命题教师:李敬文 考核方式:开卷上机考试 考试时间:100分钟 说明:上交文件夹名称或者压缩文件名称为姓名+学号(2位),如:张三06 一、 编程题:本题共1题,共30分。 实现程序Exam01 1.具体参考界面如下,具体要求: 2.完成按钮打开事件,能够对所选文件的内容读取到文本域中; 3.完成按钮复制事件,能够将源文件复制目标文件中; 4.完成按钮退出事件,能够退出应用程序。 二、 编程题:本题共1题,共30分。 实现程序Exam02 设计一个模拟银行存款和取款的程序,能够实现存款(存入数据小于1000的随机数),能够实现取款(取款小于1000的随机数),要求取款时,输出存款数、余额数,当余额小于0时,输出“余额不足,正在等待存款……”,当存款时,输出存款数、余额数。 三、编程题:本题共1题,共40分 实现记事本程序Exam03 1.具有菜单功能,包括:文件,编辑、帮助; 2.文件菜单中有子菜单:新建、打开、保存、分隔线、退出; 3.编辑菜单中有子菜单:剪切、复制、粘贴; 4.实现菜单功能:新建功能--->>能够新建一个子窗体;打开功能--->>打开一个文件,并显示内容;剪切功能--->>实现对选定文本的剪切功能;复制功能--->>实现对选定文本的复制功能;粘贴功能--->>实现对选定文本的粘贴功能。 题号 一 二 三 四 …… 总分 应得分 100 实得分 得分 阅卷人 得分 阅卷人 得分 阅卷人

Java面向对象程序设计_习题解答

Java面向对象程序设计 清华大学出版社 (编著耿祥义张跃平) 习题解答 建议使用文档结构图 (选择Word菜单→视图→文档结构图)

习题1 1.James Gosling 2. (1)使用一个文本编辑器编写源文件。 (2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用J ava解释器(java.exe)运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6.Java源文件的扩展名是.java。Java字节码的扩展名是.class。 7.D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" https://www.wendangku.net/doc/331381067.html,ng.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" https://www.wendangku.net/doc/331381067.html,ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示 Exception in thread "main" https://www.wendangku.net/doc/331381067.html,ng.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。

Java面向对象测试试题

《使用Java实现面向对象编程》阶段测试-笔试试卷 一、选择题(共25题,每题4分,满分100分) 1) 在Java类中,使用以下()声明语句来定义公有的int型常量MAX。 A. public int MAX = 100; B. final int MAX = 100; C. public static int MAX = 100; D. public static final int MAX = 100; 2) 在Java中,下列关于方法重载的说法中错误的是()。 A. 方法重载要求方法名称必须相同 B. 重载方法的参数列表必须不一致 C. 重载方法的返回类型必须一致 D. 一个方法在所属的类中只能被重载一次 3) 给定Java代码如下所示,在横线处新增下列()方法,是对cal方法的重载。 public class Test{ public void cal(int x, int y, int z) {} } A. public int cal(int x, int y, float z){ return 0; } B. public int cal(int x, int y, int z){ return 0; } C. public void cal(int x, int z){ } D. public void cal(int z, int y, int x){ } 4) 在Java中,下面对于构造函数的描述正确的是()。 A. 类必须显式定义构造函数 B. 构造函数的返回类型是void C. 构造函数和类有相同的名称,并且不能带任何参数 D. 一个类可以定义多个构造函数

面向对象程序设计(JAVA)期末考试试卷(A卷)

面向对象程序设计 (J A V A)期末考试试卷 (A卷) -CAL-FENGHAI.-(YICAI)-Company One1

课程代码: 座位号: 新疆大学20 -20 学年度第二学期期末考试 《面向对象程序设计》试卷 姓名: 学号: 专业: 学院: 班级: 20 年 月 日 一、单选题(10小题,共10分) 1.下列 选项中,用于在定义子类时声明父类名的关键字是 【 】 A .interface B . package C . extends D . class 2.在以下哪种情况下可以获得缺省构造器 【 】 A .当作任何类的定义时 B .当类没有其它构造器时 C .当定义至少一个构造器的时 D .从不需要 3.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量【 】 A .不能引用,必须改名,使它们的名称不相同 B .在成员变量前加this ,使用this 访问该成员变量 C .在成员变量前加super ,使用super 访问该成员变量 D .不影响,系统可以自己区分 4.在异常处理中,如释放资源、关闭文件、关闭数据库等由哪个子句来完成【 】 A .try 子句 B .catch 子句 C .finally 子句 D .throw 子句 5.下面哪个流类属于面向字符的输入流 【 】 A .BufferedWriter B .FileInputStream C .ObjectInputStream D .InputStreamReader 6.在Java 中,由Java 编译器自动导入,而无需在程序中用import 导入的包是 【 】。 A .java.applet B .java.awt C .java.util D .https://www.wendangku.net/doc/331381067.html,ng

Java面向对象编程练习题精编

J a v a面向对象编程练习 题精编 Lele was written in 2021

Java面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是(SE)、( EE )、( ME )。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置 Path为()、classpath为()。 3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展名为()。 4.如果Java源文件中有多个类,那么只能有一个类是()类。 5.Java程序可以分成两类,即()和()。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是(B )A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是(B) A.java B.java AppFirst

C.java D.javac AppFirst 3.设有一个Java小程序,源程序名为,其class文件为,则 运行该小程序的命令为(B) A.java FirstApplet B.javac C.appletviewer D.appletviewer 4.JDK安装完成后,主要的命令如javac、java等,都存放在 根目录的(A)文件夹下。 A.bin B.jre C.include D.doc 5.Java语言是一种 D 语言。 A.机器B.汇编C.面向过程的D.面向对象的 6、Java程序的最基本组成单位是 D 。 A.函数B.过程C.变量 D.类 三、简答题(十分重要) 1.Java语言有哪些特点 跨平台、一种简单、面向对象、分布式、半编译半解释、健 壮、安全、多线程 2.JDK安装完成后,如何设置环境变量 Path 配置:

JAVA面向对象编程测试题

Java 面向对象 一、单选: (1)在JDK1.5.0 安装目录下的bin 文件夹中,下面哪个程序是Java 执行器 (B) A )Javac.exe B )java.exe C)jdb.exe D )javah.exe E)javadoc.exe (E) (2)在JDK1.5.0 安装目录下的bin 文件夹中,下面哪个程序能生成Java 参考文档 A )Java.exe B )javac.exe C)appletviewer.exe D)javah.exe E)javadoc.exe (3)下列数据类型不属于整型的是 (E) A )byte 类型 B )short 类型 C)int 类型 D )long 类型 E)float 类型 (4 )精确保存一个值为“53.21458961”需要用什么数据类型 ( D) A )int 类型 B )long 类型 C)String 类型 D )double 类型 E)以上都可以 (5)循环语句for(int i=0。i<4。i++){}循环的次数为 (D) A )无限次 B )不确定 C)1 次 D )3 次 E)4 次 (6)若i、j 为已定义的整型,下面程序段中循环体执行的次数为 (B) for(i=0。i<5。i++){ for(j=0。j<=i。j++){ } } A )不确定 B )5 次 C)15 次 D )25 次 E)无限次 (7)执行下列程序段后,j 的值变为 (E) int i=1。 int j=10。 do{ j-=i。 i++。 }while(j--<0)。 A )9 B)10 C)-1 D)-2 E)8 (8)执行下列程序段后,y 的值变为 (E) int x,y。 for(y=1,x=1。y<=50。y++){ if(x>=10){

面向对象试题(答案)

CoreJavaOOP考试题 考试时间:90分钟 考试总分:100分 一、选择题(不定项选择)(22*4=88) 1. 类A,B的定义如下: class A { private int a = 100; A() { System.out.print("A()"); System.out.println(a); } } class B extends A { private int a = 200; B() { System.out.print("B()"); System.out.println(a); } } 运行下面的代码: new B(); 输出的结果是:(A )。 A. A() 100 B() 200 B. A() 200 B() 200 C. B() 200 A() 100 D. B() 200 A() 200

2.下列说法正确的是(D ) A.所有类都必须定义构造方法(构造器) B.构造方法必须初始化类的所有数据成员 C.子类定义了构造器后,不再调用父类的构造器 D.构造方法可以访问类的非静态成员 3.在Java中,哪个关键字使类不能派生子类?, (A ) A : final B : public C : private D : native 4.class Base{ static void test(){ System.out.println(“Base.test()”); } } public class Child extends Base{ static void test(){ System.out.println(“Child.test()”); } public static void main(String[] args){ Base base = new Child(); Child child = new Child(); base.test(); child.test(); } } 程序运行的结果是( C ) A.Child.test() Child.test() B.Child.test() Base.test() C.Base.test() Child.test() D.Base.test() Base.test()

面向对象程序设计java语言程序设计期末考试试题及部分答案

《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案2 一、单选择题(每小题2分,共10分) 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. .java B. .class C. .html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( D )方法来完成一些画图操作。 A. start( ) B. stop( ) C. init( ) D. paint( ) 4、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题(每空格1分,共20分) 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码、和解释运行字节码。 2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是Applet、类的子类并且存储该源程序文件的文件名为MyApplet。 3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器javac.exe编译该源程序文件将产生3 个文件名与类名相同而扩展名为. class的字节码文件。

JAVA面向对象基础测试题,继承,封装,多态等测试题

JAVA面向对象基础测试题 提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。 1. 程序执行的结果是:()。 01 public class Point{ 02 int y = 7; 03 public void step(int y) { 04 y += y; 05 System.out.println(y); 06 } 07 public static void main(String[] args) { 08

Point p = new Point(); 09 p.step(10); 10 } 11 } A.14 B.20 C.10 D.17 正确答案:B解析: 2. 程序的执行结果是:()。 01 public class Question { 02 private int num; 03 public static void main(String [] args){ 04 Question q = new Question();

05 q.num=13; 06 update(q); 07 System.out.println(q.num); 08 } 09 public static void update(Question q){ 10 q.num=9; 11 } 12 } A.13 B.9 C.0 D.4 正确答案:B解析: 3.

程序执行的结果是:()。 01 public class Answer { 02 public static void main(String[] args) { 03 int score = 20; 04 Answer ans= new Answer(); 05 ans.add(score); 06 System.out.println(" main:score = " + score); 07 } 08 void add(int score) { 09 System.out.println(" add:score=" + score++); 10 } 11

java面向对象试卷及答案

java面向对象程序设计 系班级姓名成绩得分评卷人 一、填空题(每空2分,共20分) 1.Java源程序的扩展名是,经过编译后的程序的扩展名是。2.Socket通常也称为,用于描述和。3.线程的优先级在至之间,数值越大 4.构造方法是一种特殊的成员方法,构造方法名与相同 5.Java语言只允许单继承,指每个类只能有一个。 二、选择题(每题2分,共50分) 1.下列哪个概念是面向对象和面向过程程序设计所共有的() A、继承 B、流程控制 C、抽象 D、封装 2.以下关于执行Java小程序的论述错误的是:() A、可以通过浏览器调用嵌入了Java小程序的HTML文档 B、可以通过appletviewer.exe调用嵌入了Java小程序的HTML文档 C、可以通过java.exe调用嵌入了Java小程序的HTML文档 D、可以在Java集成开发环境中调用嵌入了Java小程序HTML文档 3.符合对象和类关系的是:() A、人和老虎 B、书和汽车 C、楼和土地 D、松树和植物 4.关于选择结构下列哪个说法正确?() A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.一个if语句只能有一个else if语句与之对应 D.else if结构中必须有default语句 5.while循环和do…while循环的区别是:()

A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.do…while循环执行次数可能为0 D.while循环执行次数可能为0 6.关于for循环和while循环的说法哪个正确?() A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 7.下列修饰符中与访问控制无关的是() A.private B.public C.protected D.final 8.方法内的形参:() A.必须定义多个形参B.可以没有 C.至少有一个D.只能是简单变量 9.throws的作用:() A.表示方法可能会抛出例外 B.表示后面是方法的输出量 C.方法的标志,每个方法都必须有 D.没有意义 10.在Java语言中,整型常量123占用的存储字节数是:()A.1B.2 C.4 D.8 11.关于对象成员占用内存的说法哪个正确?() A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间C.对象的方法不占用内存 D.以上都不对 12.return语句:()

面向对象期末测试题(带答案).doc

济南大学2009~2010 学年第二学期课程考试试卷 课 程 java 面向对象程序设计 授课教师 考试时间 考试班级 学 号 姓 名 … … …… …… …………………………装……………… …………订………………… …… …线 …… …… …… … …… …… …… …… …

C.一个if语句只能有一个else if语句与之对应 D.else if结构中必须有default语句 5.while循环和do…while循环的区别是:(D) A.没有区别,这两个结构任何情况下效果一样 B.while循环比do…while循环执行效率高 C.do…while循环执行次数可能为0 D.while循环执行次数可能为0 6.关于for循环和while循环的说法哪个正确?(B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 7.下列修饰符中与访问控制无关的是(D) A.private B.public C.protected D.final 8.方法内的形参:(B) A.必须定义多个形参B.可以没有 C.至少有一个D.只能是简单变量 9.throws的作用:(A) A.表示方法可能会抛出例外 B.表示后面是方法的输出量 C.方法的标志,每个方法都必须有 D.没有意义 10.在Java语言中,整型常量123占用的存储字节数是:(C)A.1B.2 C.4 D.8 11.关于对象成员占用内存的说法哪个正确?(B) A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

Java面向对象练习经典题

JA V A程序作业题 1、设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。 3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。 4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。 5. 编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。 7.创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据 9 编写一个控制台应用程序,完成下列功能,并回答提出的问题。 1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。 2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。 3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么? 10 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。 1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。 2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。 3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。 11. 创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据成员被存储时,将其乘以100;当其被读取时,将其除以100。 12. 定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等字段。然后以该类为基类,派生出bicycle、car等类。并编

面向对象程序设计(JAVA)期末考试考试卷(A卷)

课程代码:座位号: 大学20 -20 学年度第二学期期末考试 《面向对象程序设计》试卷 : 学号: 专业: 学院: 班级: 20 年月日 一、单选题(10小题,共10分) 1.下列选项中,用于在定义子类时声明父类名的关键字是 【】 A.interface B. package C. extends D. class 2.在以下哪种情况下可以获得缺省构造器? 【】 A.当作任何类的定义时 B.当类没有其它构造器时 C.当定义至少一个构造器的时 D.从不需要 3.如果局部变量和成员变量同名,如何在局部变量作用域引用成员变量?【】 A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量 C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分 4.在异常处理中,如释放资源、关闭文件、关闭数据库等由哪个子句来完成【】 A.try子句B.catch子句 C.finally子句 D.throw子句 5.下面哪个流类属于面向字符的输入流【】 A.BufferedWriter B.FileInputStream C.ObjectInputStream D.InputStreamReader 6.在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是【】。 A.java.applet B.java.awt C.java.util D.https://www.wendangku.net/doc/331381067.html,ng 7.下面程序定义了一个类,关于该类说确的是【】

Abstract class abstractClass{ …… } A. 该类能调用new abstractClass(),方法实例化为一个对象 B. 该类不能被继承 C. 该类的方法都不能被重载 D. 以上说法都不对 8.已知有下面类的说明: public class X5_1_1 extends x{ private float f =10.6f; int i=16; static int si=10; public static void main(String[] args) { X5_1_1 x=new X5_1_1(); } } 在main()方法中,下面哪条语句的用法是正确的?【】A.x.f B.this.si C .X5_1_1.i D.X5_1_1.f 9.下列说法中,错误的一项是【】 A.Thread类中没有定义run()方法 B.可以通过继承Thread类来创建线程 C.Runnable接口中定义了run()方法 D.可以通过实现Runnable接口创建线程 10.当一个Statement对象要执行一个查询类的SQL语句,调用的方法是【】 A. executeQuery B.execute C. executeUpdate https://www.wendangku.net/doc/331381067.html,mit 二、填空题(10小题,共10分) 1.Java应用程序中有多个类时,java命令后的类名必须是包含了___________ 方法的那个类的名字。 2.使用关键字修饰的代码,称为同步代码段 3.对象创建完后,通过使用运算符“ . ” , 对象可以实现对变量的访问和____________的调用。 4.Java中的非字符输出流都是抽象类____________的子类。

面向对象技术java期末复习试卷

期末复习试卷(三) 一、单项选择题 1、有一段java应用程序,其中包含一个公共类,名字为TestStudent,那么保存它的 源文件名是() A. B. teststudent .class C. D. 正确答案:C 解析:一个java文件中可以包含多个类,但最多只能有一个类是公共类(public),该java文件的名字要与公共类的一致。 2、关于下面的代码,哪个描述是正确的 public class Test{ public static void main(String[] args){ Integer n1 = new Integer(3); Object n2 = new Integer(4); } } A. 可以编译通过,可以运行,并得到预期结果。 B. 可以编译通过,可以运行,但不能得到预期结果。 C. 可以编译通过,但又运行错误。 D. 有编译错误。 正确答案:D 解析:Integer类是基本数据类型int的包装类,里面封装了一个int类型的值,

提供了一些实用的方法(例如:在JavaFX中读取文本框内容是String类型的,如果要转换成int类型,就要调用Integer类的parseInt()方法)并实现了Comparable接口,在Comparable接口中定了抽象方法compareTo(T o), T是泛型,对于Integer类,T 被替换为Integer,如下图: 因此,Integer类中compareTo()方法的定义如下: 因此,compareTo的参数只能是Integer类型的,所以代码中的下面语句中的n2的类型需要进行强制类型转换,由Object转为Integer: 正确写法如下: n2)); 类似的包装类还有Long\Float\Double\Char\Boolean等,都是将基本数据类型包装为类。 3、下面哪种类型不是引用数据类型() A. 数组 B. char C. String D. Object 正确答案:B 解析:基本数据类型只是存放数据,不提供功能(即方法)包括4类八种: 布尔类型:boolean 字符类型:char

Java面向对象编程上机-练习题汇总

【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。

Java面向对象测试题

Java面向对象 测试题(一) 注: 测试时间:3小时 编程题在电脑上编写,保存在已学生名字为文件名的文件夹中 一、选择题 (共30分,每题1分<多选、少选、错选不得分>) 1、下面有关Java异常处理模型的说法错误的是()。

a)一个try块只能有一条catch语句 b)一个try块中可以不使用catch语句 c)Catch块不能单独使用,必须始终与try块在一起 d)Finally块不能单独使用,必须始终与try块在一起 2、下列选项中关于Java中super关键字的说法错误的是()。 a)super关键字是在子类对象内部指代其父类对象的引用 b)super关键字不仅可以指代子类的直接父类,还可以指代父类 的父类 c)子类可以通过super关键字调用父类的方法 d)子类可以通过super关键字调用父类的属性 3、下列选项中关于Java中this关键字的说法错误的是()。 a)this是在对象内部指代对象自身的引用 b)this关键字可以在类中的任何位置使用 c)this只和特定的对象关联,而不和类关联 d)同一个类的不同对象有不同的this 4、在Java中,Object类是所有类的父亲,用户自定义类默认扩 展自Object类,下列选项中的()方法不属于Object类的方法。 a)equals(Object obj) b)getClass() c)toString() d)trim()

5、给定如下Java代码,关于super的用法,以下描述正确的是 ()。 class C extends B{ public C(){ super(); } } a)用来调用类B中定义的super()方法 b)用来调用类C中定义的super()方法 c)用来调用类B的无参构造方法 d)用来调用类B中第一个出现的构造方法 6、在Java中,有如下两个类Student和Person。如果Student 是Person的子类,则下列声明对象x的语句中错误的是()。 a)Person x = new Student() b)Person x = new Person() c)Student x = new Person() d)Student x = new Student() 7、下列对Java中的继承描述错误的说法是()。 a)子类至少有一个基类 b)子类可作为另一个子类的基类

《面向对象程序设计JAVA语言程序设计》期末复习试题及部分答案

一、单选题 1.在下列概念中,Java语言只保留了D A.运算符重载B.结构和联合C.指针D.方法重载 2.下列类定义中,不正确的是B A.class x { .... } B.static class x implements y1,y2 { .... } C.public class x extends Applet { .... } D.class x extends y { .... } 3.下列语句序列执行后,k 的值是B int m=3, n=6, k=0; while( (m++) < (- - n) ) ++k; i++ 先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i 的值。 如i=1,则表达式(i++)的值等于1,而i的值变为2。 ++i i先自增1,再把自增后的值赋给表达式(++i)。 如i=1,则表达式(++i)的值等于2,i的值也为2, A.0 B.1 C.2 D.3 4.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是A A.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66; 5.Java语言的类间的继承关系是B A.多重的B.单重的C.线程的D.不能继承 6.下列语句序列执行后,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.3 C.2 D.33 7.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是C

面向对象程序设计(JAVA)期末考试试卷(A卷)

** 《面向对象程序设计》试题第1页(共8页)

…… } A. 该类能调用new abstractClass(),方法实例化为一个对象 B. 该类不能被继承 C. 该类的方法都不能被重载 D. 以上说法都不对 8.已知有下面类的说明: public class X5_1_1 extends x{ private float f =10.6f; int i=16; static int si=10; public static void main(String[] args){ X5_1_1 x=new X5_1_1(); } } 在main()方法中,下面哪条语句的用法是正确的?【】 A.x.f B.this.si C.X5_1_1.i D.X5_1_1.f 9.下列说法中,错误的一项是【】 A.Thread类中没有定义run()方法B.可以通过继承Thread类来创建线程C.Runnable接口中定义了run()方法D.可以通过实现Runnable接口创建线程 10.当一个Statement对象要执行一个查询类的SQL语句,调用的方法是【】 A. executeQuery B.execute C. executeUpdate https://www.wendangku.net/doc/331381067.html,mit 二、填空题(10小题,共10分) 1.Java应用程序中有多个类时,java命令后的类名必须是包含了___________ 方法的那个类的名字。 2.使用关键字修饰的代码,称为同步代码段 3.对象创建完后,通过使用运算符“ . ” , 对象可以实现对变量的访问和____________的调用。4.Java中的非字符输出流都是抽象类____________的子类。 5.Java语言使用___________类及其子类的对象来表示线程 6.可以使用String类的__________方法比较一字符串是否与字符串s相同。 《面向对象程序设计》试题第2页(共8页)

相关文档
相关文档 最新文档