Java面向对象程序设计综合练习2(单选题)

简介: Java面向对象程序设计综合练习2(单选题)

R2-1

对于类与对象的关系,以下说法错误的是( )。

A.

类是对象的类型

B.

类是同类对象的抽象

C.

对象由类来创建

D.

对象是创建类的模板



R2-2

将以下哪种方法插入行3是不合法的。

1.public  class  Test1{

2.         public  float  aMethod(float  a,float  b){   }

3.

4.}

A.


private float aMethod(int a,int b,int c){  }


B.


public  float  aMethod(float  c,float d){  }


C.


public  int  aMethod(int  a, int b){  }


D.


public  float  aMethod(float  a, float  b,float  c){  }


R2-3

要产生[20,999]之间的随机整数使用哪个表达式? ( )

A.

20+(int)(Math.random()*980)

B.

(int)(20+Math.random()*97)

C.

(int)Math.random()*999

D.

20+(int)Math.random()*980


R2-4

关于以下程序代码的说明正确的是( ) 。

class  HasStatic{
    private  static  int  x=100;
    public  static  void  main(String[  ]  args){
        HasStatic  hs1=new  HasStatic(  );
        hs1.x++;
        HasStatic  hs2=new  HasStatic(  );
        hs2.x++;
        hs1=new  HasStatic( );
        hs1.x++;
       HasStatic.x--;
       System.out.println(“x=”+x);
    }
 }

A.

程序通过编译,输出结果为:x=103

B.

5行不能通过编译,因为引用了私有静态变量

C.

程序通过编译,输出结果为:x=102

D.

10行不能通过编译,因为x是私有静态变量



R2-5

若在某一个类定义中定义有如下的方法:abstract void performDial( );该方法属于(    )。

A.

接口方法

B.

空方法

C.

抽象方法

D.

最终方法


R2-6

定义字符串:String s1="hello";对下面程序描述正确的是()。


if(s1=="hello"){
      System.out.println("s1 = "hello"");
}else{
      System.out.println("s1 !=hello");
}

A.

输出 s1 !=hello

B.

产生编译错误

C.

输出 s1="hello"

D.

编译正确,运行错误


R2-7

在使用interface声明一个接口时,只可以使用(    )修饰符修饰该接口。

A.

private  protected

B.

private

C.

protected

D.

public



R2-8

在Java中,能实现多重继承效果的方式是( )。

A.

适配器

B.

内部类

C.

继承

D

接口


R2-9

声明成员变量时,如果不使用任何访问控制符(public, protected, private),则以下哪种类型的类不能对该成员进行直接访问 (     ) .

A.

同一类

B.

同一包中的子类

C.

同一包中的非子类

D.

不同包中的子类


R2-10

关于AWT和Swing的以下说法正确的是( )。

A.

AWT在不同操作系统中显示相同

B.

Swing是AWT的子类

C.

Swing在不同操作系统中的显示风格相同

D.

AWT和Swing都支持事件模型GridLayout


R2-11

若A1、A2为已定义的接口 ,以下接口定义中没有语法错误的是(        ) 。

A.


abstract  interface  B  extends  A1,A2  { abstract  void  print(){  };}


B.


abstract  interface  B { void print() }


C.


interface  B  {  void  print();}


D.


interface  B {  void print()  {  } }


R2-12

选项中哪一行代码可以替换题目中//add code here而不产生编译错误?(    )

public abstract class MyClass {

           public int constInt = 5;

         //add code here

          public void method() {                }

}

A.


public abstract void anotherMethod() {}


B.


value = value + 5;


C.


public int method();


D.


public abstract void method(int a);


R2-13

Java中( ) 。

A.

一个子类可以有多个父类,一个父类也可以有多个子类

B.

一个子类可以有一个父类,但一个父类可以有多个子类

C.

上述说法都不对

D.

一个子类可以有多个父类,但一个父类只可以有一个子类


R2-14

下列String类的( )方法返回指定字符串的一部分。

A.

extractstring()

B.

substring()

C.

Substring()

D.

Middlestring()


R2-15

关于被私有访问控制符private修饰的成员变量,以下说法正确的是(  )

A.

只能被同一个包中的类访问

B.

可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类

C.

只能被该类自身所访问和修改

D.

可以被两种类访问和引用:该类本身、该类的所有子类


R2-16

下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果 (    )

class People {

       String name;

       public People() {

              System.out.print(1);

       }

       public People(String name) {

              System.out.print(2);

              this.name = name;

       }

}

class Child extends People {

      People father;

      public Child(String name) {

             System.out.print(3);

             this.name = name;

             father = new People(name + ":F");

      }

      public Child(){

            System.out.print(4);

      }

}

A.


432


B.


32


C.


312


D.


132


R2-17

以下关于Java的局部内部类的说法错误的是( )

A.

局部内部类可以访问外部类的所有成员

B.

局部内部类只能在当前类中使用

C.

在局部内部类中定义的内部类不能被private修饰符修饰

D.

局部内部类不能包含静态成员


R2-18

在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为(  )。

A.

隐藏

B.

覆盖

C.

重载

D.

Java不支持此特性


R2-19

下列说法正确的有() 。

A.

constructor必须与class同名,但方法不能与class同名

B.

class中的constructor不可省略

C.

一个class只能定义一个constructor

D.

constructor在一个对象被new时执行


R2-20

运行如下程序输出为:( )。

public class Test {
  public static void main(String[] args) {
    new Circle9();
  }
}
public abstract class GeometricObject {
  protected GeometricObject() {
    System.out.print("A");
  }
  protected GeometricObject(String color, boolean filled) {
    System.out.print("B");
  }
}
public class Circle9 extends GeometricObject {
  /** No-arg constructor */
  public Circle9() {
    this(1.0);
    System.out.print("C");
  }
  /** Construct circle with a specified radius */
  public Circle9(double radius) {
    this(radius, "white", false);
    System.out.print("D");
  }
  /** Construct a circle with specified radius, filled, and color */
  public Circle9(double radius, String color, boolean filled) {
    super(color, filled);
    System.out.print("E");
  }
}

A.

ABCD

B.

AEDC

C.

BEDC

D.

BACD


R2-21

欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(   )

A.

List myList=new ArrayList();

B.

ArrayList myList=new Object();

C.

List myList=new List();

D.

ArrayList myList=new List();


R2-22

以下代码的输出结果为( )。

public class Pass{
     static int j = 20;
     public void amethod(int x){
         x = x*2;
         j = j*2;
    }
    public static void main(String args[]){
        int i = 10;
        Pass p = new Pass();
        p.amethod(i);
        System.out.println(i+" and "+j);
  }
}

A.

10 and 20

B.

20 and 40

C.

10 and 40

D.

错误:方法参数与变量不匹配


R2-23

下面哪个选项中的代码没有定义内部类,或者错误的定义了内部类? (     )

A.


public Class Line {

     int length;

     Class Point {

           //内部类代码

      }

}

B.


public Class Line {

              //外部类代码

}

Class Point {

           //内部类代码

}

C.


public Class Line {

       public Point getPoint() {

            return new Point(){

                 //内部类代码

           };

       }

}  

D.


public Class Line {

       public int calcLength() {

          Class Point {

            //内部类代码

          }

      }

}


R2-24

下列选项中,用于定义接口的关键字是( )。

A.

class

B.

interface

C.

abstract

D.

implements


R2-25

在Java中,"456"属于(    )类的对象。

A.

Number

B.

String

C.

int

D.

Integer


R2-26

下列哪个类的声明是正确的?(    )

A.

abstract private move(){}

B.

abstract final class HI{}

C.

protected private number;

D.

public abstract class Car{}


R2-27

下面说法正确的是?

A.

final可修饰类、变量、方法。

B.

用final修饰的变量,在程序中可对这个变量的值进行更改。

C.

定义抽象方法需有方法的返回类型、名称、参数列表和方法体。

D.

abstract可修饰类、变量、方法。


R2-28

以下关于构造函数的描述错误的是(    )。

A.

构造函数的主要作用是完成对类的对象的初始化工作。

B.

构造函数是类的一种特殊函数,它的方法名必须与类名相同。

C.

构造函数的返回类型只能是void型。

D.

一般在创建新对象时,系统会自动调用构造函数。


R2-29

类Teacher和Student是类Person的子类,下面的代码中最后一句语句的运行结果是( ).

Person p;
Teacher t;
Student s;
//p,t and s are all non-null.
if(t instanceof Person)  {s=(Student)t;}

A.

表达式是合法的

B.

编译时正确,但运行时错误

C.

将构造一个Student对象

D.

表达式是错误的


R2-30

下面哪个函数是public void  aMethod(){...}的重载函数?(    )

A.

public void  aMethod ( ){...}

B.

public int  aMethod ( int m){...}

C.

void  aMethod( ){...}

D.

public int  aMethod(){...}


R2-31

int型public成员变量MAX_LENGTH,该值保持常数100,则定义这个变量的语句是( )。

A.

public final int MAX_LENGTH=100

B.

final int MAX_LENGTH=100

C.

public int MAX_LENGTH=100

D.

public const int MAX_LENGTH=100


R2-32

以下程序段输出结果的是( )

public class Test {
     public static void main(String args[]){
          String str="ABCDE";
          str.substring(3);
          str.concat("XYZ");
          System.out.print(str);
     }
}

A.

CDEXYZ

B.

ABCDE

C.

DE

D.

DEXYZ


R2-33

类的实例方法表示的是什么?( )

A.

类的属性

B.

父类对象的行为

C.

类的行为

D.

类对象的行为


R2-34


下面哪个对类的声明是错误的?

A.


class MyClass extends MySuperClass1, MySupperClass2 {}


B.


abstract class MyClass implements YourInterface1, Youriterface2 {}


C.


private class MyClass {}


D.


class MyClass extends MySuperClass implements YourInterface {}


E.


public class MyClass{}


R2-35

关于以下程序段,正确的说法是(    ) 。

  String  s1=”abc”+”def”;
  String  s2=new  String(s1);
  if(s1==s2)
  System.out.println(“== succeeded”);
  if (s1.equals(s2))
     System.out.println(“.equals()  succeeded”);


A.

行4、行6都不执行

B.

行6执行,行4不执行

C.

行4执行,行6不执行

D.

行4与行6都将执行



R2-36

将以下哪种方法插入行6是不合法的。(   ) 。

public  class  Test1 {
   public  float  aMethod(float a,float b) throws
   IOException {      }
 }
public  class  Test2  extends  Test1{
}


A.

float  aMethod(float  a,float  b){ }

B.


public  int  aMethod(int a,int b)throws  Exception{ }


C.


public  float  aMethod(float  p,float q){ }


D.


public  int  aMethod(int a,int  b)throws IOException{ }


R2-37

下面关于缺省构造方法的描述中正确的是( )。

A.


当类中没有定义任何构造方法时,Java编译器将为这个类创建缺省构造方法


B.


Java编译器会为所有的类创建缺省构造方法。


C.


缺省构造方法可以初始化其他方法中定义的变量


D.


如果在一个类中定义的构造方法都声明了参数,Java编译器将为这个类创建一个缺省构造方法


R2-38

以下关于继承的叙述正确的是(     )。

A.

在Java中一个类只能实现一个接口

B.

在Java中类只允许单一继承

C.

在Java中一个类不能同时继承一个类和实现一个接口

D.

在Java中接口只允许单一继承


R2-39

关于类中成员变量的作用范围,下述说法中正确的是( )。

A.

用private修饰的成员变量可以在main方法中直接使用

B.

类中所有成员变量在所有成员方法中有效

C.

用static修饰的成员变量只能在用static修饰的方法中使用

D.

只有用public修饰的变量才能在所有方法中使用


R2-40

有以下程序片段,下列哪个选项不能插入到行1。(      )

1)
2) public  class  Interesting{
3)      //do sth
4) }

A.

public class MyClass{ }

B.

package mypackage;

C.

class OtherClass{   }

D.

import java.awt.*;


R2-41

JPanel组件的默认布局管理器是( )。

A.

CardLayout

B.

BorderLayout

C.

FlowLayout

D.

GridLayout


R2-42

Swing组件必须添加到Swing顶层容器相关的( )。

A.

选项卡上

B.

内容面板上

C.

分隔板上

D.

复选框内


R2-43

方法体内定义的变量称局部变量,下述关于局部变量的说法中错误的是( )。

A.

局部变量仅在所定义的代码块内(花括号对内)有效

B.

局部变量未经赋值不能使用

C.

局部变量不能与类中的成员变量同名

D.

局部变量不能加修饰词修饰


R2-44

编译并运行以下程序,以下描述哪个选项是正确的(    )

  class  A{
       protected  boolean  equals(){
           return  super.equals();
   }
 }

A.

行2出错,不能成功编译

B.

编译通过运行无异常

C.

不能成功编译,行3出错

D.

编译通过但运行时出错


R2-45

编译和运行下列程序会出现什么样的结果( )。

public class Ref {
       public static void main(String[] args){
             Ref r = new Ref();
             r.amethod(r);
       }
       public void amethod(Ref r){
             int i = 99;
             multi(r);
       System.out.println(i);
       }
       public void multi(Ref r){
             r.i = r.i * 2;
       }
}

A.

输出:198

B.

输出:99

C.

编译出错

D.

运行出错



R2-46

下列方法头中哪一个不与其他方法形成重载(overload)关系?(    )

A.

void mmm(int i)

B.

void mmm(String s)

C.

void mmm()

D.

int mm()


R2-47

假设类A有如下定义,且a是A类的一个实例,则必定错误的选项是(  )。


class  A {
      int  i;
      static  String  s;
       void  method1() {   }
       static  void  method2()  {   }
}

A.

a.method1();

B.

System.out.println(a.i);

C.

A.method2() ;

D.

A.method1()


R2-48


下面类的定义,哪个是合法的抽象类定义。

A.


public class abstract A { abstract void unfinished(); }


B.


class A { abstract void unfinished(); }


C.


class A { abstract void unfinished() { } }


D.


abstract class A { abstract void unfinished(); }


R2-49

下列选项中,用于实现接口的关键字是 ( )。

A.

implements

B.

abstract

C.

class

D.

interface


R2-50

A派生出子类B,B派生出子类C,对于如下Java源代码正确的说法是()。

1.    A  a0 =new  A();
2.    A  a1 =new  B();
3.    A  a2 =new  C();


A.

第1行、第2行和第3行的声明都是正确的

B.

第1、2、3行能通过编译,但第2、3行运行时出错

C.

只有第1行能通过编译

D.

第1、2行能通过编译,但第3行编译出错


R2-51

下述哪条关于构造方法的说法,不符合Java语法的规定( )。

A.

构造方法无返回值,其返回值类型必须写为void

B.

每个类至少有一个构造方法

C.

构造方法必须与类同名

D.

构造方法可以是private的


R2-52

下面说法不正确的是(     )

A.

子类在构造函数中可以使用super( )来调用父类的构造函数;

B.

一个子类的对象可以接收父类对象能接收的消息;

C.

当子类对象和父类对象能接收同样的消息时,它们针对消息产生的行为可能不同;

D.

父类比它的子类的方法更多;


R2-53

非静态内部类,有时也称为实例内部类或成员内部类,它具有以下特点,除了( )。

A.

非静态内部类的实例自动持有外部类的实例引用

B.

一个内部类实例只会引用一个外部类实例

C.

外部类实例和内部类实例之间是一对多的关系

D.

在创建非静态内部类的实例时,外部类的实例不是必须存在


R2-54

下列哪些语句关于Java内存回收的说明是正确的? (  )

A.

内存回收程序允许程序员直接释放内存

B.

内存回收程序负责释放无用内存

C.

内存回收程序可以在指定的时间释放内存对象

D.

程序员必须创建一个线程来释放内存


R2-55

类中某方法定义如下:

double fun(int a,int b){

return a*1.0/b;

}

同一类内其它方法调用该方法的正确方式是( )。

A.

int x = fun(1.0,2.0)

B.

int x = fun(1,2)

C.

double a = fun(1.0,2.0)

D.

double a = fun(1,2)


R2-56

在Java中用什么关键字修饰的方法可以直接通过类名来调用?(     )

A.

void

B.

private

C.

static

D.

final


R2-57

如果要使条件method( -4.4 ) == -4成立,则用到java.lang.Math 类中哪个方法?

A.

floor()

B.

round()

C.

abs()

D.

ceil()

E.

min()

F.

trunc()


R2-58

如下在一个Java抽象类中对抽象方法的声明哪个是正确的?

A.


public abstract void method();


B.


public abstract void method() {}


C.


public abstract method();


D.


public void abstract method();


R2-59

下列哪一种叙述是正确的() 。

A.

声明抽象方法不可写出大括号

B.

抽象方法的body部分必须用一对大括号{ }包住

C.

声明抽象方法,大括号可有可无

D.

abstract修饰符可修饰属性、方法和类


R2-60

对于下列代码:

    String str1="java";
    String str2="java";
    String str3=new String("java");
    StringBuffer str4=new StringBuffer("java");

以下表达式的值为true的是( )

A.

str2= =str3;

B.

str1= =str4;

C.

str3= =str4;

D.

str1= =str2;


R2-61

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

A.

static void method( )

B.

final void method( )

C.

abstract void method( )

D.

public void method( )


R2-62

若需要定义一个类属性或类方法,应使用哪种修饰符?(      )

A.

static

B.

package

C.

public

D.

private


目录
相关文章
|
2月前
|
Java 测试技术 开发者
💡Java 零基础:彻底掌握 for 循环,打造高效程序设计
【10月更文挑战第15天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
113 63
|
28天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
18 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
35 4
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
2月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
17 0
|
3月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
|
12天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
3天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
2天前
|
安全 Java 开发者
Java中的多线程编程:从基础到实践
本文深入探讨了Java多线程编程的核心概念和实践技巧,旨在帮助读者理解多线程的工作原理,掌握线程的创建、管理和同步机制。通过具体示例和最佳实践,本文展示了如何在Java应用中有效地利用多线程技术,提高程序性能和响应速度。
23 1