技术帮
 

面向对象测试题2

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

一、填空题(每空2分,共20分)

1.Java源程序的扩展名是   .java   ,经过编译后的程序的扩展名是   .class  

2.Socket通常也称为    套接字     ,用于描述         IP地址   和   端口    。

3.线程的优先级在   1  至   10  之间,数值越大  优先级越高          

4.构造方法是一种特殊的成员方法,构造方法名与  类名   相同

5.Java语言只允许单继承,指每个类只能有一个   父类        。

二、选择题(每题2分,共50分)

1.下列哪个概念是面向对象和面向过程程序设计所共有的 ( B )

A、继承    B、流程控制

C、抽象    D、封装

2.以下关于执行Java小程序的论述错误的是:  ( C )

A、可以通过浏览器调用嵌入了Java小程序的HTML文档

B、可以通过appletviewer.exe调用嵌入了Java小程序的HTML文档

C、可以通过java.exe调用嵌入了Java小程序的HTML文档

D、可以在Java集成开发环境中调用嵌入了Java小程序HTML文档

3.符合对象和类关系的是:  ( D )

A、人和老虎    B、书和汽车

C、楼和土地    D、松树和植物

4.关于选择结构下列哪个说法正确? (B  )

A.if语句和 else语句必须成对出现

B.if语句可以没有else语句对应

C.一个if语句只能有一个else if语句与之对应

D.else if结构中必须有default语句

5.while循环和 do…while循环的区别是:  ( D )

A.没有区别,这两个结构任何情况下效果一样

B.while循环比 do…while循环执行效率高

C.do…while循环执行次数可能为0

D.while循环执行次数可能为0

6.关于 for循环和 while循环的说法哪个正确? ( B )

A.while循环先判断后执行,for循环先执行后判断。

B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果

C.两种循环任何时候都不可以替换

D.两种循环结构中都必须有循环体,循环体不能为空

7.下列修饰符中与访问控制无关的是 ( D )

A.private       B.public

C.protected        D.final

8.方法内的形参: ( B )

A.必须定义多个形参       B.可以没有

C.至少有一个          D.只能是简单变量

9.  throws的作用:  ( A )

A.表示方法可能会抛出例外  

 B.表示后面是方法的输出量

C.方法的标志,每个方法都必须有

D. 没有意义

10.  在Java语言中,整型常量123占用的存储字节数是:  ( C )

A.1      B.2

C.4    D.8

11.关于对象成员占用内存的说法哪个正确?  ( B )

A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

C.对象的方法不占用内存

D.以上都不对

12.  return语句:  ( C )

A.只能让方法返回数值    B.方法都必须含有

C.方法中可以有多句return   D.不能用来返回对象

13.下列说法哪个正确?  ( A )

A、一个程序可以包含多个源文件

B、一个源文件中只能有一个类

C、一个源文件中可以有多个公共类

D、一个源文件只能供一个程序使用

14.关于方法main()的说法哪个正确?( C )

A.  方法main()只能放在公共类中

B. main()的头定义可以根据情况任意更改

C. 一个类中可以没有main()方法

D. 所有对象的创建都必须放在main()方法中

15.构造函数何时被调用?  ( A )

A、创建对象时     B、类定义时

C、使用对象的方法时  D、使用对象的属性时

16.抽象方法:  ( c )

A、可以有方法体

B、可以出现在非抽象类中

C、是没有方法体的方法

D、抽象类中的方法都是抽象方法 

17.关于继承的说法正确的是:  ( B )

A、子类将继承父类所有的属性和方法。

B、子类将继承父类的非私有属性和方法。

C、子类只继承父类public方法和属性

D、子类只继承父类的方法,而不继承属性

18.关于构造函数的说法哪个正确?  ( C )

A、一个类只能有一个构造函数

B、一个类可以有多个不同名的构造函数

C、构造函数与类同名

D、构造函数必须自己定义,不能使用父类的构造函数

19.关于super的说法正确的是:B

A、是指当前对象的内存地址

B、是指当前对象的父类对象的内存地址

C、是指当前对象的父类

D、可以用在main()方法中

20.覆盖与重载的关系是  ( A )

A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中

B.覆盖方法可以不同名,而重载方法必须同名

C.final修饰的方法可以被覆盖,但不能被重载

D.覆盖与重载是同一回事

21.下列关于finally的说法正确的是?  ( A )

A.无论程序是否找到合适的例外控制器,都会去执行finally语句

B.finally语句应该放在所有例外控制器的最前面

C.如果程序在前面的例外控制器中匹配到了合适例外,就不再执行finally语句

D.如果程序在前面的例外控制器中匹配到了多个合适的例外,就不再执行finally语句

22. 对于已经被定义过可能抛出例外的语句,在编程时:  ( A )

A、必须使用try/catch语句处理例外,或用throws将其抛出

B.如果程序错误,必须使用 try/catch语句处理例外

C.可以置之不理

D.只能使用try/catch语句处理

23.下列哪个关键字用于实现接口  ( A )

A.implements                       B.implement

C. import                             D. imports

24.字符流与字节流的区别在于  ( B )

A.前者带有缓冲,后者没有

B.前者是块读写,后者是字节读写

C.  二者没有区别,可以互换使用

D. 每次读写的字节数不同

25.下列流中哪个不属于字符流  ( D )

A.InputStreamReader

B.BufferedReader

C. FilterReader                       

D. FileInputStream

 

三、程序阅读与填空题(每题6分,共30分)

1.   阅读程序给出结果

下列程序段用来计算Fibonacci序列的第0,1,2,…各项

public class Fibonacci {

   public static void main(String args[]) {

      System.out.println("Fibonacci 第4项="+fib(3)      );

   }

   static int fib(int n) {

      if (n==0||n==1) {

          return n;

      }

      else   {

          int sum=fib(n-1)+fib(n-2);

          return sum;

      }

   }

}

输出结果为:

 (2)  2           

 

2.  多线程CPU调度

// TwoThreads.java源代码如下:

public class TwoThreadsDemo

{

    public static void main(String[] args)

    {

       new SimpleThread("Cat").  Run()(1)   ;

       new SimpleThread("Mouse").  Run()(2)     ;  

    }

}

 class SimpleThread extends Thread

{

    public SimpleThread(String str)

    {

       super(str);  

    }  

    public void run()

    {

       for (int i=0;i<10;i++)

       {

           System.out.println(i+" "+getName());

           try

           {

              sleep((long)(Math.random()*1000));

           }catch (InterruptedException e){} 

       }  

       System.out.println("DONE! "+getName());

    }}

3.  按注释提示完成文件复制的程序

   //FileStream源代码如下:

 import java.io.*;

 class FileStream {

    public static void main(String args[]) {

       try{

      File inFile=new File("file1.txt"); //指定源文件

      File outFile=new File("file2.txt"); //指定目标文件

      FileInputStream fis=(1) new FILEinputSream(infile)        ;

      FileOutputStream fos=new  FileOutputStream(outFile);

  int c;

 //逐字节从源文件中输入,再输出到fos流

while((c=fis.read())!=-1)

                 (2) fos.write(fis,0,c)         ;

      fis.close();

    fos.close();

       }

catch(Exception e) {

       System.out.println("FileStreamsTest: "+e);

       }

  }

}

 

4. 阅读程序,给出结果

//B.java源代码如下:

class A{

      int x=100;

}

class B extends A{

      int x=200;

      void prt(){

          System.out.println("SubClass: "+x);

          System.out.println("SuperClass: "+super.x);

      }

      public static void main(String args[]){

          new B().prt();

      }

}

输出结果是

(1)  200         

(2)  100         

5.  阅读程序,给出结果:

// AbstractClassDemo.java源代码如下:

abstract class Shape {     //定义抽象类Shape和抽象方法display

   abstract void display();

}

class Circle extends Shape {

   void display() {     //实现抽象类的方法

       System.out.println("Circle");

   }

}

class Rectangle extends Shape {

   void display() { System.out.println(“Rectangle”)            //实现抽象类的方法      System.out.println("Rectangle");

   }

}

class Triangle extends Shape {

   void display() {            //实现抽象类的方法

       System.out.println("Triangle");

   }

}

public class AbstractClassDemo{

   public static void main(String args[]){

       (new Circle()).display();   //定义无名对象来调用对应的display方法

       (new Rectangle()).display();

       (new Triangle()).display();

   }

}

输出结果是:

(1)  circle         

(2)  rctanglee         

(3)  triangle