《JAVA考核题面向对象选择题答案.docx》由会员分享,可在线阅读,更多相关《JAVA考核题面向对象选择题答案.docx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北润JAVA考核-面对对象第一部分 英语测试(每题分,共分)其次部分学问点测试(分)一、选择题(每题2分,共110分)1.下面关于变量及其作用范围的陈述哪个是不对的?( B )A.实例变量是类的成员变量。B.实例变量用关键字static声明。C.在方法中定义的局部变量在该方法被执行时创建。D.局部变量在运用前必需被初始化。2 .下面哪条语句把方法声明为抽象的公共方法?( B )A. public abstract method();B . public abstractvoid method ();C. public abstract void method() D. public void
2、method() extends abstract;3 .若在某一个类定义中定义有如下的方法:final void aFinalFunction( ) 则该方法属于(C )。A、本地方法B、静态方法C、最终方法 D、抽象方法4 . main方法是Java Application程序执行的入口点,关于main方 法的方法头以下哪项是合法的(B )。A、 public static void main()B public staticvoid main(String args)public static void main(String args)System, out. printin(i);A
3、.编译出错 B. null C. 1 D. 0解析:final修饰的成员变量(静态成员原理和实例成员变量) 必需显示初始化。静态成员变量可以在声明时或静态初始化代码块显 示初始化;实例成员变量可以在声明时、初始化代码块或构造器中显 示初始化。27 .下面方法中的“返回类型Type”应当是什么?( A )public class Returnlt(returnTypemethodA(byte x, double y)return (short)x / y * 2;A. double B. int C. byte D. short28 .下面哪个修饰符修饰的变量是全部同一个类生成的对象共享的? (
4、C )A、 publicB、 privateC、 static Dfinal29 .下面关于java中类的说法哪个是不正确的?( AC )A.类体中只能有变量定义和成员方法的定义,不能有其他语句。B.构造函数是类中的特殊方法。C.类确定要声明为public的,才可以执行。D. 一个java文件中可以有多个class定义。30 .下列哪个类声明是正确的?( D)A. abstract final class Hl B. abstract private move() C. protected private number;D. public abstract class Car 31 .方法重载
5、是指(A )A.两个或两个以上的方法取相同的方法名,但形参的个数或类型 不同B.两个以上的方法取相同的名字和具有相同的参数个数,但形参 的类型可以不同C.两个以上的方法名字不同,但形参的个数或类型相同D.两个以上的方法取相同的方法名,并且方法的返回类型相同32 .指出下列程序运行的结果(B )public class ExampleString str=new String (good);char ch=,a, b , c ;public static void main(String args)Example ex=new Example();ex. change (ex. str, ex.
6、 ch);System, out. print(ex. str+ and );Sytem. out. print (ex. ch);public void change (String str, charch)str=/test ok;chO= g ;A. good and abcB. good and gbcC. test ok and abcD. test ok and gbc33.下列哪些语句关于内存回收的说明是正确的?( B )A.程序员必需创建一个线程来释放内存B.内存回收程序负责释放无用内存C.内存回收程序允许程序员干脆释放内存D.内存回收程序可以在指定的时间释放内存对象34 .M
7、AX_LENGTH是int型public成员变量,变量值保持为常量100, 用简短语句定义这个变量。(CD )A、 public int MAX_LENGTH=100;B、 final int MAX_LENGTH=100;C、 final public int MAXJLENGTH=100;D、 public final int MAX_LENGTH=100;35 .给出下面代码:I) class Parent 2 private String name;3 public Parent () 4 5) public class Child extends Parent (6 private
8、String department;7 public Child() 8 public String getValue() return name; 9 public static void main(String arg) 10 Parent p = new Parent();II) 12 那些行将引起错误? ( D )A、第3行 B、第6行 C、第7行 D、第8行36 .类 Teacher 和 Student 是类 Person 的子类;Person p;Teacher t;Student s;/p, t and s are all non-null.if (t instanceof Pe
9、rson) s =(Student)t; 最终一句语句的结果是:(B )A、将构造一个Student对象;B、表达式是合法的;C、表达式是错误的;D、编译时正确,但运行时错误。解析:考查instanceof和继承中的强制转换。t instanceof Person表达式是正确的。s=(Student) t;这句转换编译是错误的。 37.给出下面代码段1) public class Test (2) int m, n;3) public Test () 4) public Test (int a) m=a; 5) public static void main(String arg) 6) Te
10、st tl, t2;7) intj, k;8) j=0; k=0;9) tl=new Test ();10) t2=new Test(j, k);11) 12) )哪行将引起一个编译时错误?( D)A、 line 3 B、 line 5 C、 line 6 D、 line 1038.对于下列代码:1) class Person 2) public void printValue(int i, int j) /. 3) public void printValue(int i) /. 4) )5) public class Teacher extends Person (6) public vo
11、id printValue() /)7) public void printValue(int i) /.8) public static void main(String args)9) Person t = new Teacher();10) t.printValue(10);11) 第10行语句将调用哪行语句? ( D )A、 line 2 B、 line 3 C、 line 6 D、 line 739 . System类在哪个包中?( D )A、 java, util B java, io C java, awt D java, lang40 .对于下列代码:public class
12、Parent public intaddValue( int a, int b) int s;s = a+b;return s;)class Child extends Parent )下述哪些方法可以加入类Child? ( CD )A、 intaddValue( int a, int b )/ do something. . . )B public void addValue (int a, int b ) / do something. . . C public intaddValue ( int a )/ do something. . . )D、public intaddValue(
13、int a, int b ) throws MyException (/do something.解析:A选项不符合一大;B选项返回值类型不匹配;C选项为自己 的方法;D选项异样更明确。41 .看下面一段程序:class Aclassvoid go () System, out. printin (Aclass);)public class Bclass extends Aclassvoid go(System, out. printin(Bclass);public static void main(String args)Aclass a=new Aclass();Aclass al=ne
14、w Bclass();a. go ();al. go();)以上程序运行结果是:(c )A、 AclassAclassB、 BclassBclassC AclassBclass D、 BclassAclass42 .运行下列程序,会产生什么结果:(B)class Outerl(private int a;void foo (double d,final float f)String s;final boolean b;class Innervoid methodinner() System, out. printin (z/in the Inner);public static void ma
15、in(String args) Outerl me=new Outerl();me. foo (123, 123);System, out. printin (outer);)A、 in the Inner outer B outerC、in the InnerD 编译不通过43 .下面哪个修饰符修饰的方法只能被本类中的其他方法运用(C )A、 protectedB staticC privateD、public44 .下面程序运行后的输出结果为(C )class A(staticint y=3;void showy ( )System, out. printin( “y=” +y);clas
16、stestA public static void main(String aaa )A al=new A();A. y+=l;al. y+;al. showy();输出结果选择:A、y=3;B、y=4;C、y=5;D、程序运行出错45 .下面关于构造函数的说法不正确的是(B )A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋 值。B、构造函数不行以重载。C、构造函数没有返回值。D、构造函数名称确定要和类名相同。46 .给出如下代码:class Testprivateint m;public static void fun() / some code.如何使成员变量m被函数fun (
17、)干脆访问?( C)A、将 private int m 改为 protected int mB、将 private int m 改为 public int mC、将 private int m 改为 static int mD、将 private int m 改为 int m47 .为AB类的一个无形式参数无返回值的方法method书写方法头, 使得运用类名AB作为前缀就可以调用它,该方法头的形式为(A )。A. static void method( )B. publicvoidmethod()C. final void method( )D. abstract voidmethod ()4
18、8.假如类中的成员变量可以被同一包访问,则运用如下哪个约束 符?( D )A、 privateB、 publicC protectedD no modifier49.构造方法何时被调用(B )C、 public static int main(String args) D、 public void main(String arg)5 .在Java中,一个类可同时定义许多同名的方法,这些方法的形式 参数个数、类型或依次各不相同,传回的值也可以不相同。这种面 对对象程序的特性称为(C )。A、隐藏 B、覆盖 C、重载 D、Java不支持此 特性6 .下列关于构造方法的叙述中,错误的是(C )A.
19、Java语言规定构造方法名及类名必需相同B. Java语言规定构造方法没有返回值,但不用void声明C. Java语言规定构造方法不行以重载D. Java语言规定构造方法只能通过new自动调用7 .关于被私有访问限制符private修饰的成员变量,以下说法正确 的是(C )A.可以被三种类所引用:该类自身、及它在同一个包中的其他类、 在其他包中的该类的子类8 .可以被两种类访问和引用:该类本身、该类的全部子类C.只能被该类自身所访问和修改D.只能被同一个包中的类访问8.类Testi定义如下:1. public class Testi2. public floataMethod(float a,
20、 float b)A.类定义时C .调用对象方法时B.创建对象时D.运用对象的变量时50 .假如任何包中的子类都能访问超类中的成员,那么应运用哪个限 定词(C )A.publicB.privateC.protectedD.transient51 . Java变量中,以下不属于复合类型的数据类型是(B )A.类B.字符型C.数组型D.接口52 .对象运用时,下面描述错误的是(B )A.通过”运算符调用成员变量和方法B.通过成员变量的访问权限设定限制自身对这些变量方法的调用C.将一个对象申明为类的成员时,必需在运用前为其支配内存D.在方法中运用对象作为参数时,接受引用调用(也说明的通,但 确定要了
21、解实质为值调用)53 . Java编程所必需的默认引用包为(B )A. java, sys 包B. java, lang 包C. java, new包D.以上都不是54.定义一个类名为“MyClass. java”的类,并且该类可被一个工程 中的全部类访问,那么该类的正确声明应为:(C )A. private class MyClass extends ObjectB. classMyClass extends ObjectC.public class MyClassD. private class MyClass extends Object55.内部类是在一个类内嵌套定义的类。其特点描述错
22、误的是(A )A.只能在定义它的类或程序段中或表达式内匿名运用,外部运用 时必需给出类的全名B.可以运用它所在类的静态成员变量或实例成员变量,但不行以 运用所在类中的局部变量(后半句可对可错,看怎么理解)C.可以作为其它类的成员,而且可访问它所在类的成员D.除static内部类外,不能在类内声明static成员二、填空题(每空0.5分,共26. 5分)1、在类声明中供应类标记的关键字是class。2、当一个方法中有多个参数时,参数之间是用英文逗号隔开。3、在Java中,运用变量遵守先声明后运用(先定义后运用)的原则。4、比较两个字符串是否相同接受equals。方法。5、 抽象方法是一种仅有方法
23、头,没有具体方法体和操作实现的 方法,该方法必需在抽象类之中定义。6、包定义时,需运用关键字package来实现。创建一个名为 MyPackage的包的语句是package MyPackage;。要运用包中的类, 必需用关键字import导入这些类所在的包。当要引用包中全部的类 时,类名可以用通配符*号代替。7、对象是由一组属性和对这组属性进行3的一组服务组成的。 对象是指 具体的事物,而类是指一类具有某种共性的事物。 由类来确定具体对象的过程称为 实例化。8、对一类对象的抽象则是类,而类的实例化结果是对象。一个类是由类声明和类体两部分组成。类修饰符有3种,它们分另lj是 public abs
24、tract和 final08、 抽象类不能被实例化,它不具备实际功能,只用于衍生子类。抽象方法是只有方法声明,没有代码实现的空方法。9、当一个类的类修饰符为final时,说明该类不能被继承,即不能有 子类。10、Java用extends关键字指明继承关系。一个类要从另一个类继 承变量和方法,必需运用关键字extendsoJava程序在extends之后 只能有一个父类,即extends只能实现 单 继承。在Java中只能实现 单继承(Java不支持多重继承),但可通过 接口实现多重继承。11、要在类声明中实现接口,需运用关键字implements。一个类可实 现多个接口,各接口名是以英文逗号分
25、隔。12、在Java中,变量分为成员变量和局部变量。在类体中声明的变量 称为 成员变量。在方法中声明的变量称为 局部变量。成员变量 在整个类体中有效,而局部变量只在定义它的 方法内有效。假如 局部变量名及成员变量名相同,则成员变量被屏蔽。13、在Java程序中,运用关键字 this来引用当前对象。Java中通过关键字super来实现对父类成员的访问。14、一个方法的定义是有方法声明和 方法体两部分组成。方 法声明包括方法名、返回类型和形式参数,一个方法的标记是圆括 呈。15、构造方法的方法名要求及 类名相同,而且无返回值。构造 方法只能通过new运算符调用,用户不能干脆调用。16、 方法重载是
26、指多个方法享有相同的名字,但这些方法的参数 必需不同,或者是参数的个数不同,或者是参数类型不同。17、一个对象的生命周期包括3个阶段:创建、运用和 释放(消 亡)O18、对象通过运用运算符”实现对自己的变量访问。19、面对对象的3个特性是:封装性、继承性和 多态性。 在Java中,通过对象的 封装,实现了模块化和信息隐藏。 20、两个方法具有相同的名字,相同的参数表和相同的返回类型,只 是函数体不同,则称为重写。21、Java中成员方法可分成两种:类方法和实例方法。用关键字 static修饰的方法就称为类方法。实例方法可对当前对象的实例变 量进行操作,也可对类变量进行操作。实例方法不但可以访问
27、实例 变量,也可以访问类变量。类方法不能访问实例变量,只能访问类变量。22、在Java中,用关键字abstract来修饰一个类,则该类为抽象类。 若某个类包含了抽象方法,则该类必需被定义为抽象类。23、接口的定义,需运用关键字interface来声明。接口中没有什么 实例方法,全部的成员方法都是public abstract方法。24、声明父类时,需运用关键字extends来实现。由于Java的继承性,所以子类的成员数目比父类的成员数目 多 三、简答题(每题5分,共60分)第一步:理解考核学问点和考核的目的。其次步:背下来,记忆清晰精确。第三步:能把学问点用自己的话精确的描述出来。1、supe
28、r()及 this。的区分?解答:this为当前类的对象的引用,全部资源都可以访问。super 为父类对象的引用,在子类访问父类的成员和行为时运用,必需受类 继承规则的约束。在构造函数中,假如第一行没有写super(),编译器会自动插入。 但是假如父类没有不带参数的构造函数,或这个函数被私有化了(用 private修饰)。此时你必需加入对父类的实例化构造。而this就没 有这个要求,因为它本身就进行实例化的构造。而在方法中super和this运用的方法就差不多了。只不过super 要考虑是否能访问其父类的资源。2、请列举Java语言中的权限访问修饰符,并说明每种权限的含义。解答:正确运用权限访
29、问修饰符,能够有效限制类以及类成员的 平安性,Java语言中有四种访问修饰符,包括public同包、 protected以及private, 一般状况下,应用中的类多是public权限, 属性多是private权限,方法多是public权限。参考答案:Java语言中有四种权限访问修饰符,即public、protected、 同包以及privateopublic表示公共权限,即任何包中都可以访问;protected表示受爱惜权限,即同包中可以访问,同包中的子类可以访问:同包权限是默认权限,即不显示指明权限修饰符的时候就是同包权限,表示只有同包中可以访问;private是私有权限,表示只能在本类中
30、访问。3、java中实现多态的机制是什么?解答:静态的多态:方法名相同,参数个数或类型不相同。(overloading)动态的多态:子类覆盖父类的方法,将子类的实例传及父类的引用, 调用的是子类的方法;实现接口的实例传及接口的引用,调用的实现 类的方法。4、 abstract class 和 interface 的区分。解答:(1)抽象类通过extends继承,只能继承一个抽象类;接 口通过implements运用,可以实现多个接口。(2)抽象类可以有部分实现,抽象类和接口都不能创建实例。声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行
31、为的类,并为该类声明方 法,但不能在该类中实现该类的状况。不能创建abstract类的实例。 然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类 的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的 子类为它们父类中的全部抽象方法供应实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实 现这些方法。接口(interface)是抽象类的变体。在接口中,全部方法都是抽 象的。多继承性可通过实现这样的接口而获得。接口中的全部方法都 是抽象的,没有一个有程序体。接口只可以定义static final成员 变量。接口的实现及子类相像,除了该实现
32、类不能从接口定义中继承 行为。当类实现特殊接口时,它定义(即将程序体赐予)全部这种接 口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口 的方法。由于有抽象类,它允许运用接口名作为引用变量的类型。通 常的动态联编将生效。引用可以转换到接口类型或从接口类型转换, instance of运算符可以用来确定某对象的类是否实现了接口。5、静态变量和实例变量的区分?是否可以从一个static方法内部发出对非static方法的调用并说明理由?解答:(1)声明时静态变量用static修饰,静态变量属于整个类, 被该类的所用实例对象所共有。实例变量属于该类的某个对象,拥有 自己的特征。(2)静态变量
33、在类加载初始化的时候支配内存并初始化,实例变量在由该类实例化对象时进行支配内存并初始化o(3)调用方法不同。静态方法可以调用静态变量,不行调用实例变量。实例方法可以调用静态变量、实例变量不行以从一个static方法内部发出对非static方法的调用,因 为static方法属于整个类,实例方法得由该类的某个对象来调用。当调用包含非static方法的static方法时,该类不确定是否存在实 例化对象,所以在static方法内调用非static方法时将出现错误。 鉴于此道理不行以,编译阶段就会提示该调用的错误。不行以,假如其中包含对象的method。,不能保证该对象初始化.6、说说你说知道的设计模式
34、。解答:单例模式、工厂模式和叮嘱模式。7、Anonymous Inner Class (匿名内部类)是否可以extends (继承)其它类,是否可以implements (实现)interface (接口)?、解答:匿名内部类可以继承其他类或完成其他接口。8、Static Nested Class 和 Inner Class 的不同,说得越多越好。解答:(1) Static Nested Class是被声明为静态(static)的 内部类,它可以不依靠于外部类实例被实例化。而通常的内部类须要 在外部类实例化后才能实例化。Static内部类可以包含static成员;一般内部类不行以。9、什么是方
35、法重载(overload) ?什么是方法的重写(Override) ?Overload和Override的区分。Overloaded的方法是否可以变更返回 值的类型?解答:方法重载:假如在一个类中定义了多个同名的、相同返回 值类型的方法,它们或有不同的参数个数或有不同的参数类型(不同 的形参列表),则称为方法的重载(Overloading) o方法重写:假如在子类中定义某方法及其父类有相同的名称和参 数,我们说该方法被重写(Overriding)。子类的对象运用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽To区分:方法的重写Overriding和重载Overloading是
36、Java多态 性的不同表现。重写Overriding是父类及子类之间多态性的一种表 现,重载Overloading是一个类中多态性的一种表现。Overloaded的方法是可以变更返回值的类型和权限修饰符。假如父类定义方法A,子类要重写方法A,则子类不能运用其它返回类型, 必需运用父类一样的返回类型或比父类返回类型小。另外解析重载:假如一个类的某个行为,会有不同的算法和逻辑, 例如,Math类的计算确定值的方法,既可以计算int类型数值的确 定值,也可以计算double类型数值的确定值。这种状况下,每种类 型都定义一个不同的方法名,如ablnt absDouble,那么类的可读性就较差,运用时,
37、必需熟悉处理每种类型参数所对应的方法名。然 而,假如运用同一个方法名,而运用不同的形式参数来区分这些方法, 那么就具有很好的可读性,如abs (int i)、abs (double d)等。可读性强的代码是企业对开发人员的基本要求,方法重载能够使得代 码有很好的可读性。方法重载指的是在一个类中可以声明多个相同名字的方法,而方 法的形式参数有区分。调用这些同名的方法时,JVM会依据实际参数 的不同绑定到不同的方法。10 构造器 Constructor 是否可被 override?解答:构造器Constructor不能被继承,因此不能重写Override, 但可以被重载Overloado11、是否
38、可以继承String类,并说明理由? String类是一个“不行 变类”,请说明“不行变类”的含义。解答:不行以,因为String类是final类故不行以继承。解析不行变类:String类是一个不行变类,即immutable类。所 谓不行变,意思是当一个字符串被初始化后,它的值就不会被变更。 例如,String s=new String (hello”)为将初始化一个值为 hello 的字符串,假如调用s. toUpperCase ()看起来是把hello变为大写的 HELLO,然而事实上并不会把已有的hello变为HELLO,而是在新的 空间初始化一个HELLO字符串。也正因为有这种不行变性
39、,所以才能 支持“字符串实例池”的运用。参考答案:所谓的不行变类,就是当字符串初始化后,就不能够 被变更。12、请说明Java语言中的值传递规则。当一个对象被当作参数传递到一个方法后,此方法可变更这个对 象的属性,并可返回变更后的结果,那么这里原委是值传递还是引用 传递?第一问解析:值传递时编写应用时不行避开的操作。例如某方法 声明形式是public void f (int x) ,写方法是,必需为其传递一 个int类型的实际参数,如f (10)。又如public void g(Employee)。 那么运用该方法时,必需为其传递一个Employee类型的实际参数, 例如g(new Emplo
40、yee() o所以,对于初级程序员来说,了解Java3. )将以下哪种方法插入行3是不合法的。(B )A、public float aMethod (float a, floatb, float c) B、public float aMethod (float c, floatd) C、public int aMethod (int a, intb) D、private float aMethod (inta, intb, intc) 9 .阅读以下代码:public class foo(public static void main (String args)String s;System,
41、 out. printin(s= + s);输出结果应当是:(C )A.代码得到编译,并输出“s二”B.代码得到编译,并输出“s二null”C.由于String s没有初始化,代码不能编译通过D.代码得到编译,但捕获NullPointException异样解析:局部变量必需显示的初始化。引用类型变量初始化时假如没 有具体对象引用,可以初始化为null。10 .下述概念中不属于面对对象这种编程范畴的是(D )。A.对象、消息C.类、封装B.继承、多态D.过程调用语言的值传递规则特殊重要。Java语言是本类型传递的值,例如 f(10),仅仅把10复制给形式参数x,是值的拷贝。而引用类的传递 时引用
42、,即虚地址,例如g(newEmployee。)是把实际参数的虚地址 传递给形式参数e,也就是说实际参数和形式参数的虚地址相同,物 理上是同一个对象。第一问解答:基本数据类型传递的是值,引用类型传递的是引用, 即虚地址。其次问解答:是值传递。Java编程语言只有值传递参数。当一个 对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的 引用。对象的内容可以在被调用的方法中变更,但对象的引用是恒久 不会变更的。四、程序题(每题5分,共25分)1、补足代码定义一个抽象类AbstractTest,其中有一个公共的抽象方法printMsgO 0然后定义此抽象类的一个子类DefaultTest,包括
43、的成 员变量有姓名,学号,分数,且此类中包括二个构造方法。abstract class AbstractTestString name;String id;int score;接收三个参数的构造方法接收姓名和学号二个参数的构造方法实现抽象方法,方法体为打印出学生的姓名及成果答案:abstract class AbstractTest 抽象方法定义public abstract void printMsgO;public class DefaultTest extends AbstractTest String name;String id;int score;*接收三个参数的构造方法publi
44、c DefaultTest (String name, String id, int score)this, name = name;this, id 二 id;this, score = score;*接收姓名和学号两个参数的构造方法public DefaultTest(String name, String id) this, name = name;this, id = id;*实现抽象方法,方法体为打印出学生的姓名及成果public void printMsgO System, out. printin(学生 + this, name + 的成果为: + this, score);定义
45、接口 Student,该接口中有一个无参、无返回值的方法prtMsg; 定义类College,包括的私有属性有id和name,包括一个接收学生 学号和姓名的构造方法,并且实现Student接口。interface Student(1) /College类的声明,实现Student接口(2) 定义私有成员变量id和name,类型自定(4)构造方法声明和定义,接收二个参数(5) /实现prtMsg方法的声明/prtMsg的方法体System, out. printin(id + name);答案:interface Student void prtMst ();public class Colle
46、ge implements Student /定义私有成员变量id和name,类型自定private String name;private String id;*构造方法声明和定义,接收二个参数public College (String name, String id) this, name = name;this, id 二 id;*实现prtMsg方法的声明public void prtMst() / prtMsg的方法体System, out. println(id + name);3、改正下面程序段中的错误(共5处)public class Student String id;String name;int salary;public void Test (Stri