类和面向对象习题

3.4 精选习题

一、单项选择题

1.下列不属于面向对象编程的特性的是(    )。

A.封装                         B.继承

C.抽象                         D.多态

2.(*)下述概念中不属于面向对象的是(    )。

A.对象、消息                   B.继承、多态

C.类、封装                     D.过程调用

3.(*)对象是Java中很重要的概念,下列说法中能准确地描述对象的是(    )。

A.对象可以理解为一种数据结构,具有操作数据的方法

B.对象是抽象的,类可以通过对象来生成

C.对象只是方法的集合

D.对象是一组具有共同的结构和行为的类

4.(*)下面有关变量及其作用域的陈述哪一项是错误的?(    )

A.在方法里面定义的局部变量在方法退出的时候被撤销

B.局部变量只在定义它的方法内有效

C.在方法外面定义的实例变量在对象被构造时创建

D.在方法中定义的方法的参变量只要该对象被需要就一直存在

5.下列类的声明中不合法的是(    )。

A.class Flower{ }

B.class中国人 { }

C.privateclass SuperStar { }

D.public classA { }

6.下列方法的声明中不合法的是(    )。

A.float play(){ return 1; }

B.void play(intd,e) { }

C.double play(intd) { return 2.0; }

D.int play(intr) { return 1; }

7.下列哪个方法不能与方法publicvoid add(int a){ }重载?(    )

A.public intadd(int b) { }

B.public voidadd(double b) { }

C.public voidadd(int a, int b) { }

D.public voidadd(float g) { }

8.类Test定义如下:

1.public classTest {

2.    floatuse(float a, float b) {

3.    }

4.  

5.}

将以下哪种方法插入第4行是不合法的?(    )

A.float use(floata, float b, float c) {  }

B.float use(floatc, float d) {  }

C.int use(int a,int b) {  }

D.float use(inta, int b, int c) {  }

9.为了区分重载多态中同名的不同方法,要求(    )。

A.采用不同的参数列表

B.返回值类型不同

C.调用时用类名或对象名做前缀

D.参数名不同

10.下列有关构造方法描述正确的是(    )。

A.所有类都必须定义一个构造方法

B.构造方法必须有返回值

C.构造方法必须访问类的非静态成员

D.构造方法可以初始化类的成员变量

11.下列关于构造方法的叙述中,错误的是(    )。

A.构造方法名与类名必须相同

B.构造方法没有返回值,但不用void声明

C.构造方法不可以重载

D.构造方法只能通过new自动调用

12.设A为已定义的类名,下列声明对象a的语句中正确的是(   )。

A.public A a =new A( );

B.A a = A( );

C.A a = new A();

D.a A;

13.给出如下类定义:

public class Test {

Test(int i) {

}

}

如果要创建一个该类的对象,正确的语句是(    )。

A.Test t = newTest();

B.Test t = newTest(5);

C.Test t = newTest("5");

D.Test t = newTest(3.4);

14.(*)下面哪些说法是正确的?(    )

A.用new运算符来创建的对象,在JVM退出时才会被当做垃圾回收

B.判断一个对象是否可以被垃圾回收的条件为是否还有对该对象的引用

C.Java方法的参数传递规定,使用new来创建的对象为地址传递

D.Java方法支持重载,但方法必须至少参数或返回值的类型不同

15.以下代码的调试结果为(   )。

class Square {

    int a;

    void Square() {

        a = 10;

    }

    public static void main(String[] args) {

        Square s = new Square();

        System.out.println(s.a);

    }

}

A.输出10                       B.编译错误

C.输出0                        D.运行错误

16.下面程序的输出结果是(   )。

class Test {

    int i = 2;

    String s = null;

    void Test() {

        i = 3;

        s = "days";

    }

    public static void main(String args[]) {

        Test t = new Test();

        System.out.println(t.i + t.s);

    }

}

A.2null                        B.3null

C.3days                        D.以上都不对

17.编译并运行下面的Java程序,将产生什么结果?(    )

class A {

    int i = 1;

    int j;

    public static void main(String[] args) {

        int k;

        A a = new A();

        System.out.println(a.i + a.j + k);

    }

}

A.0                            B.1

C.2                            D.出现编译错误

18.如下代码的输出结果是(    )。

public class Test {

    void printValue(int m) {

        do {

            System.out.println("The value is " + m);

        } while (--m > 10);

    }

    public static void main(String arg[]) {

        int i = 10;

        Test t = new Test();

        t.printValue(i);

    }

}

A.The value is8               B.Thevalue is 9

C.The value is10              D.Thevalue is 11

19.如下代码的输出结果是(    )。

class Point {

    int x, y;

    Point(int a, int b) {

        x = a;

        y = b;

    }

}

class Test {

    public static void main(String[] args) {

        Point p1, p2;

        p1 = new Point(3, 6);

        p2 = new Point(8, 9);

        p1 = p2;

System.out.println("p1.x= " + p1.x + ", p1.y = " + p1.y);

    }

}

A.p1.x = 3, p1.y = 6           B.p1.x = 3, p1.y= 9

C.p1.x = 8, p1.y = 6           D.p1.x = 8, p1.y= 9

20.下列关于变量的叙述哪个是错误的?(    )

A.实例变量是类的成员变量

B.在方法中定义的局部变量在该方法被执行时创建

C.实例变量用关键词static声明

D.局部变量在使用前必须被初始化

21.编译和运行下面代码时显示的结果是(    )。

public class MyClass {

    static int i;

    public static void main(String argv[]) {

        System.out.println(i);

    }

}

A.编译错误                     B.null

C.1                            D.0

22.下列程序运行的结果是(    )。

public class A {

    int z = 2;

    staticvoid f(int y) {

        y= z;

        System.out.println(y);

    }

    public static void main(String args[]) {

        f(1);

    }

}

A.1                            B.2

C.程序编译错误                 D.以上都不对

23.下列程序运行的结果是(    )。

public class Test {

    static short index;

    static int age;

    public static void setData(long n) {

        index = n;

    }

    public static void main(String args[]) {

        setData(9);

        System.out.println("index = " + index + "; age= " + age);

    }

}

A.index = 9;age = 0           B.index = 0; age = 0

C.index = 0;age = 9           D.以上都不对

24.下列程序运行的结果是(    )。

class Point {

    static int x;

    int y;

}

class Test {

    public static void main(String args[]) {

        Point p1 = new Point();

        Point p2 = new Point();

        p1.x = 10;

        p1.y= 20;

        System.out.print(p2.x+ ", ");

        System.out.print(p2.y);

    }

}

A.0, 0                         B.10, 0

C.0, 20                        D.10, 20

25.下面关于Java语言中实例方法和类方法的说法,哪一项是对的?(   

  • 13
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值