天天看点

2008-2009学年第 1 学期期末考试试题( B 卷)(1)

1、选择题(20分)

    本题共有10个小题,每个小题都有4个答案,但只有1个是正确的,请把正确答案的代码填入小题后的空格中,每个小题2分,共20分。

(1)下列不属于面向对象编程的三个特征的是(      )。

A.封装     B.指针操作      C.多态性       D.继承

(2)向容器中添加新组件的方法是(           )。

A.add( )    B.insert( )    C.fill( )    D.set ( )

(3)下列标识符中哪项是不合法的?(       )。

A.BigMeaninglessName    B.$int     C.1st      D.$1

(4)关于容器类(container)下列说法正确的是(        )。

A.容器本身不是一个组件      B.是component类的子类

C.不具有构件的所有性质      D.不能在容器中放置其他组件或容器

(5)在Applet的生命周期中,下列哪个方法使Applet成为激活状态?(          )。

A.destroy( )   B.start( )   C.init ( )    D.stop( )

(6)下列哪个选项不是inputStream类中的方法?(         )

A.Public abstract int read(  )throws IOException

B.Public final void writeint(int v)throws IOException

C.Public void close(  ) throws IOException

D.Public int available(  ) throws IOException

(7)Frame 的默认的布局管理器是下列哪一个?(         )。

A.FlowLayout   B.BorderLayout  C.GridLayout   D.CardLayout

(8)Java 程序的执行过程中用到一套JDK 工具,其中java.exe是指(         )。

A.Java 文档生成器  B. Java 解释器  C.Java 编译器 D.Java 类分解器

(9) 事件处理机制能够让图形界面响应用户的操作,主要包括(         )。

A、事件       B 、事件处理     C、事件源      D、以上都是

(10) java 语言中提供了用于网络工作的类和接口的包是(        )。

A、java.net             B、java.network

C、java.internet        D、java.connect

 2、填空题(20分)

    本题共有10个小题,请把合适的内容填到每个小题的空白处,每小题2分,共20分。

(1)在Java中有一种叫作         的特殊方法,我们在程序中用它来对类的对象成员进行初始化。

(2)java 有两类应用程序:Java Application和                         。

(3)事件源实例化后,必须进行授权,注册该类事件的                     。

(4)如果一个类包含一个或多个abstract方法,它就是一个                类。

(5)设有数组定义:int MyIntArray[  ]={10,20,30,40,50,60,70};

则执行F面几个语句后的输出结果是___   ____。

  int s=0;

  for(int i=0;  i<MyIntArray.1ength;i++)

  s+=MyIntArray[i];

  System.out.println(s);

(6)Java Appliction应用程序的编写和执行可分为编写源代码、                 和解释执行三步。

(7)一个Applet标记中,必须出现的属性有                     、WIDTH、 HEIGTH。

(8)java 语言通过接口支持                   继承,是类继承具有更灵活的扩展性。

(9)数据报通信协议UDP 是无连接协议,对每个数据报是一个独立的信息传输单位,包括完整的源地址和                       。

(10)用static修饰的方法,称为               方法。它们不是对象的方法,而是整个类的方法。

3、判断题(10分)

    本题共有10个小题,请判断说法的正误,正确的说法在小题后括号中打√号,否则打×号,每个小题1分,共10分。

(1)Java 仅支持类间的多重继承。                               (        )

(2)类的私有属性和私有方法不可以被其子类访问。                (        )

(3)重载的方法不可以通过它们的返回值类型的不同来区分。         (        )

(4) 在父类中声明为 final 的方法,不可以在其子类中被重新定义(覆盖)。(      )

(5) 接口中所有方法不都为抽象方法。                                   (       )

(6) 子类的类成员变量不能与其父类的类成员变量同名。                (        )

(7)类头定义包含的四个部分,分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的。                         (         )

(8)方法可以没有返回值,或有一个返回值,也可以有多个返回值。      (         )

(9)Java 源程序的文件名必须和主类的类名相同。                    (         )

(10)Java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口。(     )

4、读程序题(每小题6分,本题共30分)

(1)阅读程序,给出程序的运行结果。

public class ClassA

 {

  public String a;

}

class ClassB extends ClassA 

{

  public String b="hello";

  public static void main(String args[]) 

{

      ClassB bb=new ClassB();

      bb.a=" world";     

      System.out.println(bb.b+bb.a);

  }

}

(2)有如下源程序:                

import  java.applet.Applet ;

import  java.awt.Graphics ;

public class MyApplet_param extends Applet  //定义主类

{

   private  String  s = "" ;    //用于接收HTML参数的程序变量

   private  int  x ;

   private  int  y ;

   public void init ( )

   {

    s = getParameter ( "vstring" ) ;//接收HMTL中传递的参数

    x = Integer.parseInt ( getParameter ( "x" ) ) ;

    y = Integer.parseInt ( getParameter ( "y" ) ) ;

   }

   public void paint ( Graphics  g )

   {

    if(s != null)

        g.drawString (s,x,y);

   }

}

对应的超文本文件为:

<HTML>

 <BODY>

  <APPLET  code = "MyApplet_param.class"  height=200  width = 300>

   <PARAM  name = vstring  value = "我是来自HTML的参数">

   <PARAM  name = x        value = 50>

   <PARAM  name = y        value = 100>

  </APPLET>

 </BODY>

</HTML>

问:上述JAVA小程序的运行结果是什么?

(3)有如下源程序:                           

import java.awt.*;

import java.applet.*;

public class Test54 extends Applet{

B b;

public void init( ){

b=new B( 'f', 87.6f, 69.1f);

}

public void paint(Graphics g){

g.drawString("序号 "+"性别 "+"成绩1 "+"成绩2 ",20,50);

b.Print(g);

}

}

class A{

static int n=100;

char ch;

A( ) { n++; }

A( char c){ this( ); ch=c; }

void Print(Graphics g){

g.drawString("  "+n+"  "+ch,20,70);

}

}

class B extends A{

float s1, s2;

B(float r1,float r2){ s1=r1; s2=r2; }

B( char c, float r1, float r2){

super(c);

s1=r1; s2=r2;

}

void Print(Graphics g){

super.Print(g);

g.drawString("  "+s1+"  "+s2,40,70);

}

}

问题: 该程序的输出是什么?

(4)现有类说明如下:         

class A{

int x=20;

int GetA(){return x;}

}

class B extends A{

int x=200;

int GetB(return x;}

}

问题:

1)类B是否能继承类A的属性x?。

2)若b是类B的对象,则b.GetB()的返回值是什么?

3)若b是类B的对象,则b.GetA()的返回值是什么?

4)类A和类B都定义了x属性,这种现象称为什么?

(5)阅读以下程序给出程序的功能,并给出一个水仙花数。

public class Narcissus

{

public static void main(String args[])

{

    int i,j,k,n=150,m=1;

    while(n<1000)

{

    i = n/100;

    j = (n-i*100)/10;

    k = n%10;

    if((Math.pow(i,3) + Math.pow(j,3) + Math.pow(k,3)) == n)

  System.out.println("找到第"+ m++ + "个水仙花数:" + n);

    n++;

    }

}

}