一.选择题(234)1.下面中哪两个可以在A的子类中使用:()classA{protectedintmethod1(inta,intb){return0;}}A.publicintmethod1(inta,intb){return0;}B.privateintmethod1(inta,intb){return0;}C.privateintmethod1(inta,longb){return0;}D.publicshortmethod1(inta,intb){return0;}解答:AC主要考查子类重写父类的方法的原则B,子类重写父类的方法,访问权限不能降低C,属于重载D,子类重写父类的方法返回值类型要相同或是父类方法返回值类型的子类2.Abstractmethodcannotbestatic.TrueorFalse?ATrueBFalse解答:A抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract是矛盾的,所以abstract是不能被修饰为static,否则就失去了abstract的意义了3.Whatwillbetheoutputwhenyoucompileandexecutethefollowingprogram.classBase{voidtest(){System.out.println(Base.test());}}publicclassChildextendsBase{voidtest(){System.out.println(Child.test());}staticpublicvoidmain(String[]a){ChildanObj=newChild();BasebaseObj=(Base)anObj;baseObj.test();}}Selectmostappropriateanswer.AChild.test()Base.test()BBase.test()Child.test()CBase.test()DChild.test()解答:D测试代码相当于:BasebaseObj=newChild();父类的引用指向子类的实例,子类又重写了父类的test方法,因此调用子类的test方法。4.Whatwillbetheoutputwhenyoucompileandexecutethefollowingprogram.classBase{staticvoidtest(){System.out.println(Base.test());}}publicclassChildextendsBase{voidtest(){System.out.println(Child.test());Base.test();//Calltheparentmethod}staticpublicvoidmain(String[]a){newChild().test();}}Selectmostappropriateanswer.AChild.test()Base.test()BChild.test()Child.test()CCompilationerror.CannotoverrideastaticmethodbyaninstancemethodDRuntimeerror.Cannotoverrideastaticmethodbyaninstancemethod解答:C静态方法不能在子类中被重写5.Whatwillbetheoutputwhenyoucompileandexecutethefollowingprogram.publicclassBase{privatevoidtest(){System.out.println(6+6+(Result));}staticpublicvoidmain(String[]a){newBase().test();}}Selectmostappropriateanswer.A66(Result)B12(Result)CRuntimeError.Incompatibletypefor+.Can'tconvertaninttoastring.DCompilationError.Incompatibletypefor+.Can'taddastringtoanint.解答:B字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如上边例子要是System.out.println((Result)+6+6);那么结果就是(Result)66,如果第一个和第二个。。。第n个都是基本数据第n+1是字符串类型,那么前n个都按加法计算出结果在与字符串连接6..Whatwillbetheoutputwhenyoucompileandexecutethefollowingprogram.Thesymbol’⌴’meansspace.1:publicclassBase{2:3:privatevoidtest(){4:5:StringaStr=⌴One⌴;6:StringbStr=aStr;7:aStr.toUpperCase();8:aStr.trim();9:System.out.println([+aStr+,+bStr+]);7:}8:9:staticpublicvoidmain(String[]a){10:newBase().test();11:}12:}Selectmostappropriateanswer.A[ONE,⌴One⌴]B[⌴One⌴,One]C[ONE,One]D[ONE,ONE]E[⌴One⌴,⌴One⌴]解答:E通过StringbStr=aStr;这句代码使bStr和aStr指向同一个地址空间,所以最后aStr和bStr的结果应该是一样,String类是定长字符串,调用一个字符串的方法以后会形成一个新的字符串。7.下面关于变量及其范围的陈述哪些是不正确的():A.实例变量是类的成员变量B.实例变量用关键字static声明C.在方法中定义的局部变量在该方法被执行时创建D.局部变量在使用前必须被初始化解答:BC由static修饰的变量称为类变量或是静态变量方法加载的时候创建局部变量8.下列关于修饰符混用的说法,错误的是():A.abstract不能与final并列修饰同一个类B.abstract类中可以有private的成员C.abstract方法必须在abstract类中D.static方法中能处理非static的属性解答D:静态方法中不能引用非静态的成员9.执行完以下代码int[]x=newint[25];后,以下哪项说明是正确的():A、x[24]为0B、x[24]未定义C、x[25]为0D、x[0]为空解答:Ax属于引用类型,该引用类型的每一个成员是int类型,默认值为:010.编译运行以下程序后,关于输出结果的说明正确的是():publicclassConditional{publicstaticvoidmain(Stringargs[]){intx=4;System.out.println(“valueis“+((x4)?99.9:9));}}A、输出结果为:valueis99.99B、输出结果为:valueis9C、输出结果为:valueis9.0D、编译错误解答:C三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。99.9是double类型而9是int类型,double容量高。11.关于以下application的说明,正确的是():1.classStaticStuff2.{3.staticintx=10;4.static{x+=5;}5.publicstaticvoidmain(Stringargs[])6.{7.System.out.println(“x=”+x);8.}9.static{x/=3;}10.}A、4行与9行不能通过编译,因为缺少方法名和返回类型B、9行不能通过编译,因为只能有一个静态初始化器C、编译通过,执行结果为:x=5D、编译通过,执行结果为:x=3解答:C自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执行。12.关于以下程序代码的说明正确的是():1.classHasStatic{2.privatestaticintx=100;3.publicstaticvoidmain(Stringargs[]){4.HasStatichs1=newHasStatic();5.hs1.x++;6.HasStatichs2=newHasStatic();7.hs2.x++;8.hs1=newHasStatic();9.hs1.x++;10.HasStatic.x--;11.System.out.println(“x=”+x);12.}13.}A、5行不能通过编译,因为引用了私有静态变量B、10行不能通过编译,因为x是私有静态变量C、程序通过编译,输出结果为:x=103D、程序通过编译,输出结果为:x=102解答:D静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量x,静态变量可以通过类名调用。13.下列说法正确的有()A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor解答:C构造方法的作用是在实例化对象的时候给数据成员进行初始化A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法B.构造方法与类同名,类中可以有和类名相同的方法D.构造方法可以重载14.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法解答:DA.实例方法不可直接调用超类的私有实例方法B.实例方法不可直接调用超类的私有的类方法C.要看访问权限15.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号解答:Dabstract可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{}16.下面代码的执行结果是?importjava.util.*;publicclassShortSet{publicstaticvoidmain(Stringargs[]){SetShorts=newHashSetShort();for(Shorti=0;i100;i++){s.add(i);s.remove(i-1);}System.out.println(s.size());}}A.1B.100C.ThrowsExceptionD.NoneoftheAbove解答:Bi是Short类型i-1是int类型,其包装类为Integer,所以s.remove(i-1);不能移除Set集合中Short类型对象。17.链表具有的特点是:(选择3项)A、不必事先估计存储空间B、可随机访问任一元素C、插入删除不需要移动元素D、所需空间与线性表长度成正比解答:ACDA.采用动态存储分配,不会造成内存浪费和溢出。B.不能随机访问,查找时要从头指针开始遍历C.插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素D.需要用额外空间存储线性表的关系,存储密度小18.Java语言中,String类的IndexOf()方法返回的类型是?A、Int16B、Int32C、intD、long解答:CindexOf方法的声明为:publicintindexOf(intch)在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回-1。19.以下关于面向对象概念的描述中,不正确的一项是