当前位置:文档之家› JAVA类与对象及数组习题及复习资料

JAVA类与对象及数组习题及复习资料

JA V A类和对象及数组习题一、选择题(1)下列构造方法的调用方式中,正确的是( D )--原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。

A.按照一般方法调用B.由用户直接调用C.只能通过new自动调用D.被系统调用(2)在Java中,能实现多重继承效果的方式是( C )--原因:一个类可以同时实现多个接口。

Java接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。

A.内部类B.适配器C.接口D.同步(3)int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java中定义常量用关键字final来定义。

A.public int MAX_LENGTH=100 B.final int MAX_LENGTH=100 C.public const int MAX_LENGTH=100 D.public final int MAX_LENGTH=100 (4)下列叙述中,正确的是( A )—原因:Java严格区分大小写,所以变量number 与Number不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*-------*/”和文档注释/**-------*/。

Java源文件中的public类只能有一个。

A. 声明变量时必须指定一个类型B. Java认为变量number与Number相同C. Java中唯一的注释方式是"//"D. 源文件中public类可以有0或多个(5)下列叙述中,错误的是( D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。

所以可以认为子类是父类的扩展。

A. 父类不能替代子类B. 子类能够替代父类C. 子类继承父类D. 父类包含子类(6)下列代码中,将引起编译错误的行是( B )—原因:定义float型变量并对其初始化时,其值后面要加一个f.1)public class Exercise{2)public static void main(String args[]){3)float f=0.0;4) f +=1.0;5)}6)}A. 第2行B. 第3行C. 第4行D. 第6行(7)下列关于继承的哪项叙述是正确的?( D ) –错误原因:JAVA不允许多重继承,但可以通过接口的机制来达到多重继承的目的;一个类可以同时继承一个类和实现多个接口,但是不能同时继承多个类。

(15)为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。

--原因:static修饰的方法又称为静态方法。

静态方法是类方法,它可以直接通过类来调用,也可以通过类实例来调用。

A.static void method( ) B. public void method( )C.final void method( ) D. abstract void method(16) 不使用static修饰符限定的方法称为对象(或实例)方法,下列哪一个说法是正确的?( D )--原因:A子类实例方法可以直接调用父类的public和protected实例方法,但不能调用父类的private方法。

B类方法也称为静态方法,非静态的方法不能调用静态的方法和成员变量,所以无论是父类还是子类的实例方法都不能调用静态方法。

C一个类的实例方法只有这个类的其它方法或对象可以调用,不可以由其它类不经过实例化直接调用。

A.实例方法可以直接调用父类的实例方法。

B.实例方法可以直接调用父类的类方法。

C.实例方法可以直接调用其他类的实例方法。

D.实例方法可以直接调用本类的实例方法(17)设有下面的一个类定义:class AA { static void Show( ) { System.out.println(“我喜欢Java!”); } }class BB { void Show( ) { System.out.println(“我喜欢C++!”); }}若已经使用AA类创建对象a和BB类创建对象b,则下面( A、C )方法调用是正确的–原因:静态方法属于类方法,它可以直接通过类来调用,也可以通过类实例来调用。

而非静态的方法则只能通过类实例(对象)来调用。

所以AA类的静态show方法即可通过类也可以通过对象来调用,而BB类中的非静态方法show则只能通过对象b来调用。

A. a.Show( ) ; b.Show( )B. AA.Show( ); BB.Show( );C. AA.Show( ); b.Show( );D. a.Show( ); BB.Show( );(18) 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。

这种面向对象程序特性称为( C )。

–原因:同一名称的方法实现不同的功能是面向对象的多态性的表现,该多态性也称为重载。

A.隐藏B.覆盖C.重载D.Java不支持此特性(19) 对于构造函数,下列叙述不正确的是( C )。

–原因:子类可以通过super来调用父类的构造方法。

A.构造函数也允许重载。

B.子类无条件地继承父类的无参构造函数。

C.子类不允许调用父类的构造函数。

D.在同一个类中定义的重载构造函数可以相互调用。

(20) 对于子类的构造函数说明,下列叙述中不正确的是( D )。

--原因:子类不可以继承父类的有参构造函数。

只能通过super调用。

A.子类无条件地继承父类的无参构造函数。

B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。

C.在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数。

D.子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。

二、请写出下列程序的运行结果(1)下列程序的运行结果是( s=120 ) —分析:if语句执行3次,分别是当i=0,3,6时,对应的数组中的数分别为:10,40,70,它们的和为120.public class Examac{ public static void main(String args[ ]){ int i , s = 0 ;int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 };for ( i = 0 ; i < a.length ; i ++ )if ( i%3 == 0 ) s += a[i] ;System.out.println("s="+s); } }(2)下列程序的运行结果是( 110 110 110 110 110 )—分析:for循环执行5次,分别输出11+99,22+88,33+77, 44+66, 55+55的和,且之间用空格隔开。

public class Examad{ public static void main(String args[ ]){ int i ;int a[ ] = { 11,22,33,44,55,66,77,88,99 };for ( i = 0 ; i <= a.length / 2 ; i ++ )System.out.print( a[i]+a[a.length-i-1]+" ");System.out.println( ); } }(3)下列程序的运行结果是( parentchildchild)—分析:当对象myC调用方法printAll()后,顺序执行该方法中的三条语句,在子类Child中,重载了父类的printMe方法,所在当执行this.printMe() 和printMe()方法时都调用重载后的printMe()方法。

所以依次输出parent,child,child.class Parent{ void printMe(){ System.out.println("parent"); } }class Child extends Parent{ void printMe(){ System.out.println("child"); }void printAll(){ super.printMe();this.printMe();printMe(); } }public class Examae{ public static void main(String args[ ]){ Child myC = new Child( );myC.printAll( ); } }(4)下列程序的运行结果是(The String No.1 isThe String No.2 is String 2The String No.3 is stringThe String No.4 is stringThe String No.5 is string )—原因:s1定义了一个空的字符串对象,所以不会输出任何东西。

s2定义了一个字符串对象并赋初值为string2。

s3定义了一个以字符数组为参数的字条串对象,并将该字符数组组成的字符串赋给s3。

s4定义同s3,只是只取字符数组从索引值为2的字符开始之后的6个字符,所以会去掉前面的两个空格。

s5是以一个StringBuffer类对象为参数定义的一个字符串对象,它的初值同s3.class Examaf {public static void main(String args[]) {String s1=new String();String s2=new String("String 2");char chars[]={' ',' ','s','t','r','i','n','g'};String s3=new String(chars);String s4=new String(chars,2,6);byte bytes[]={0,1,2,3,4,5,6,7,8,9};StringBuffer sb=new StringBuffer(s3);String s5=new String(sb);System.out.println("The String No.1 is "+s1);System.out.println("The String No.2 is "+s2);System.out.println("The String No.3 is "+s3);System.out.println("The String No.4 is "+s4);System.out.println("The String No.5 is "+s5); } }(5)下列程序的运行结果是(0 and 01 and 00 and 11 and 10 and 21 and 2)—原因:不带标签的break只结束它所在那一层循环不能结束外部循环,所以内层循环只能执行两次,分别是j为0,1时。

相关主题