Java面向对象模拟试题1_第1页
Java面向对象模拟试题1_第2页
Java面向对象模拟试题1_第3页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、对错错、判断题正确的描述打钩,错误的打叉,每题 1 分,共 10分1 抽象类中不可以有非抽象的方法。 错2 如果将一个对象强制类型转换为一个不兼容的类型,将引发NullPointerException异常。 错3 Java 中 Object 类是最顶层的类。 对4 程序在编译通过以后,仍然可能出现运行时错误和逻辑错误。 5 可以通过 javac 来运行一个 Java Application 。 错6 可以在子类构造函数中通过 this 关键字调用基类的构造函数。7 Java 语言是 IBM 公司设计的一种面向对象程序设计语言。错8 一个 Unicode 字符占 4 个字节。 错9 在循环语句中

2、,使用 continue; 语句可以跳出循环。 错10 在 Java Application 中如果没有定义 main 方法,那么程序不能编译。二、简答题请将答案写到答题纸上,注明题号。每题 3分,共 30分1 请看以下代码 :package mytest;public class Main public static void main(String args) A();class AJava 在运行上述代码时输出一个很奇异的结果 :60aeb0尝试解释一下可能的原因 .点评:此题的关键在于虽然类 A 没有定义任何方法,但它隐含着从 基类 Object 中继承了 toString() 方法。

3、答案必须点出这一结果是执行 toString() 方法得到的。2 什么叫多态你是如何理解多态的请设计一个简单的例如, 展示多 态的用法。点评:几乎所有的 Java 教材都要介绍多态的概念, 但只有能用自己 的语言说清楚, 并能自己设计一个典型实例展示多态特性的, 才算是真正弄明白 了。从试卷中发现,不少同学弄混了方法重载与方法覆盖,认为 “方法重载就是多态。3 在 Java GUI 程序中,布局管理器是一个很重要的概念。谈谈你 对这个概念的理解,并进而答复以下问题:如果要你开发出一个Windows资源管理器(图1 ),你将如何应用适宜 的“布局管理器来实现其界面图 1 Windows 7 中的

4、资源管理器请指明你在图 1 中的哪局部应用哪种布局管理器。4 int 和 Integer 都可以代表一个整数, 这两者在使用上有什么区别吗为什么 JDK 中要设计两个数据类型来表示同一种数据5 Java Application 的程序入口点为 main() 函数,其声明如下:public static void main (String args)请解释一下为何 main() 函数是公有的和静态的6 抽象类与接口都不能直接用来创立对象, 那么,这两者什么用彼此之间又 有何区别你认为在哪种场合应该用抽象类,哪种场合应该用接口在JDK中你能找到相应的实例吗如果能找得到,请分析一下JDK的设计者为何

5、将它们设计为“抽象 类或接口。7 如何判断函数构成重载关系挑出以下函数中不构成重载关系的函数, 指明它违 反了哪个判断准那么。 1void myFunc; 2int myFuncint x,int y; 3int myFuncstring str, string str2; 4string myFuncint x, int y;另外,你还记得JDK中有哪个类拥有重载的方法吗列举一两 个。8 Swing和AWW可以用于设计GUI 图形用户界面程序,这两者有何区别你还用过其他的编程语言或开发工具设计 GUI程序吗如果让它们与Java 进行比照,你觉得使用Java设计GUI程序的优点在哪,缺点在哪9

6、 在面向对象程序中,实现代码复用主要有两种方式: 继承和组合请设计两段例如代码, 分别展示出 Java 实现这两种方式的代码框架如果在某个实际开发场景中这两种方式都可用,你认为应该 优先选择哪一种原因10各种类型的几何图形都有自己的面积计算公式,但在一个CAD(计算机辅助设计)软件中,图形的种类非常多,如果程序需要计算出任何一种图形的面积, 最简单的想法是使用条件判断语句根据图形类型来选择相应的计算公式。然而, 这种方法不太好, 可能会导致嵌套层次很深的条件判断语句。 另外,如果软件要 扩充功能以支持新的图形种类, 那么又不得不修改调用不同公式计算图形面积的代 码。在学习了面向对象技术之后,你

7、能对上述问题给出一个较好 解决方案来吗请以计算圆形、矩形和三角形三种几何图形的面积为例,列 出关键代码或者绘出UML图来展示你的方案。三 阅读程序题(每题 3 分,共 12 分)说明:请仔细阅读左栏的程序代码,将程序运行结果写在“运行结果一栏。程序一public class Test public static void main (String args) String s1=new String(Hello);String s2=Hello;String s3=Hello;String s4=s1;运行结果falsetruetruetruetruetrue程序二public class T

8、est private static void printArray(int arr)for(int i=0;i ;i+)n);private static void changeValue(int value) value*=2;private static void changeValue(int arr) for(int i=0;i;i+)arri*=2;public static void main (String args) int arr=1,2,3,4,5;changeValue(arr0);printArray(arr);changeValue(arr);printArray(

9、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 tryfu

10、n1();catch(NullPointerException ex) NullPointerException : +();finally Go through finally code in fun2().);public static void main (String args) try fun2();catch(MyException ex)MyException:+();Exception:+();运行结果Go through finally code in fun2().catch MyException object. Message:An MyException object

11、 is thrown in fun1().四、程序改错题(每题 3分,共 12分)说明:下述程序中都包含着错误而不能通过编译。请在右栏指出程序错 误的原因(可指明行号),并修改程序使其可以通过编译。程序一1 public class Main 2 public static final A Aobj=null;Aobj=new A();5 6 7 class A8 更正(1) 去掉 final(2)去掉 main() 函数中的赋值语句 , 定义语句改为 :public static final A Aobj=new A();程序二01 public class Test 02 public s

12、tatic void main(String args) 03MyClass obj=new MyClass();04+=,World!;08 class MyClass 09public String Info=Hello;10 public MyClass(String Info)11 12 =Info;13 14 更正不再允许直接调用尝试调用默认构造函数。 但在用户指定了一个构造函数之后, 默认构造函数。更正:Test obj=new Test(Hello);程序三01 abstract class Animal 02 public abstract void saySomething(

13、)03 你想说什么就说吧! );05 06 class Dog extends Animal 07 public void saySomething() 08 我现在有了第二职业:捉耗子! );0910 11 public class Test 12 public static void main (String args) 13 Animal ani=new Dog();14 ();15 16 更正03 句去掉 abstract 。或者去掉 Animal 类 saySomething 方法中的所有实现代码。六 编程题共 36 分说明:1编程题共分为两组:简单编程题与综合编程题。简单编程题不

14、要求写出完整的可运行的程序。 综合编程题要求写出的程序必须是可以通过编译 的完整的程序。2请在试卷后所附的答题纸上书写程序代码,注明题号。3代码要书写标准,卷面整洁。点评:1 简单编程题每题 4 分,共 20 分1编写代码生成 10个位于 50,100 区间的整数。点评:我本意是要求学生生成随机数,但题目没有强调是随 机数,所以,这道题简直就是送分题,难度大大降低。2编写一个方法,接收一个整数数组作为参数,此方法会找出其最大值、最 小值和平均值。要求使用递归方法实现。点评:这道题看上去简单,但其实难度不小。问题的关键在于如何在方法的递归调用中暂存数据。这有两 种方式实现:第 1 种是将最大值、

15、最小值和平均值作为类的字段,而将求 值的递归函数作为类中的方法, 在方法的每次递归调用中直接修改类中的相应字 段。第 2 种是创立一个新类,为其设计几个字段来代表最大值、最小值、总和, 再提供一个公有方法用于得到平均值, 然后将其作为递归函数的 一个参数传送。此题设计时应该将“平均值改为求“数组元素的总和, 这样可以大大降低此题的难度,这是我设计试题时失误的地方。(3) 如果你设计的一个类只允许创立一个实例,你会如何设 计它写出类的框架代码。如果希望你设计的类最多只能创立 3 个实例,你又该如何修 改你的代码再扩充一下:如果要求你设计一个类,在程序运行时才决定它最多能创立 的实例个数,你打算如

16、何设计它点评:(4) 为了按内容来比拟属于同一类型的两个对象的“大小,JDK中定义了一个 Comparable 接口用于供程序员自定义两个对象的比拟规那么, 此接口声明如下: public interface Comparableint compareTo(Object other);实现了此接口的两个对象不妨称之为 X和Y可以相互比较:两对象X和丫相等,compareTo方法返回0, X小于丫时compareTo方法 返回一个负数通常设为一1, X大于丫时返回正数通常设为1。请编写一个方法,接收一个 Comparable 对象数组作为参数, 然后,此方法对此数组中的对象进行升序排列。 5从

17、1 到 100 的 100 个整数,以某种随机的方式进行排列,然将它们挨个放 到一个整数数组中,此数组只能容纳 99 个整数,因此,必定会有一个整数会丢 弃。编写一个函数,接收一个包容 99 个整数的数组作为参数,找出被丢弃的哪个整 数。另外,你如何保证此函数接收的数组满足以下预设的条件1 数组包容 99 个整数2数组中的整数均在 1,100 的范围之内3 数组中不包含两个相同的整数如果函数接收到的数据不满足上述要求,你打算如何处理写出你的处理策略。点评: 这道题其实来自于软件公司的面试题。大多数同学都能顺利 地答复第一问,虽然算法不优化。第 2 问其实是了解一下学生是否知道如何实施 “防卫型 编码,仅有少数学生给出了可行的实现方案。2 综合编程题 16 分 以下为一棵有序二叉树:图 2请用 Java 实现上述数据结构, 并编写一个函数按前序方式遍历此树的所有节点。说明: 1程序必须为完整的可编译运行的 Java Application 。2假设树中每个节点中都保存着一个整数,代表此节点所保存的数据。3所谓前序遍历,是指从树的根节点开始,先输出根节点保存的数据,然后 输出左子树根节点保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论