admin 管理员组

文章数量: 887031


2024年1月17日发(作者:php无限循环代码)

类和对象课后练习

一、选择题

1、下列选项中关于Java中类和对象的说法错误的是(D )。

A、类是具有相同属性和共同行为的一组对象的集合

B、在Java中使用class关键字定义类

C、对象是类的实体,同一个类可以有多个实体,也就是多个对象

D、类的某个对象被赋值后,该类所有对象都被赋予此值

2、在Java中,定义了表示教师的类Teacher,代码如下所示,则正确访问教师姓名的语句是(C )。

public class Teacher{

public String name; //姓名

public String course; //教授课程

public String dep; //专业方向

public int teaYear; //教龄

}

A、String teacherName = ;

B、String teacherName = name;

C、Teacher teacher = new Teacher();

String teacherName = ;

D、Teacher teacher = new Teacher();

String teacherName = ;

3、关于Java中变量作用域,下面选项中说法正确的是( AB)。

A、其他类的方法要访问某个类的成员变量,须先创建对象,再通过点运算符来访问

B、在方法中定义的变量称为局部变量,作用域仅限于定义它的方法

C、成员变量必须先声明并赋值后使用

D、如果在定义局部变量的时候没有赋初始值,Java会给它提供一个默认值

4、分析如下的Java代码,编译运行结果为(D )。

public class Test{

public static void main(String[] args) {

int i = 0;

for (; i < 10; i++) {

if (i > 8) {

String test = "ok";

}

}

. print(test);

}

}

A、输出:ok

B、输出:okok

C、编译通过,但没任何输出

D、编译报错

5、关于Java语言中方法重载的构成要素,下列说法错误的是(C )。

A、方法名相同

B、参数个数不同

C、方法返回值类型相同

D、参数类型不同

6、在以下Java程序的方法中,两个方法之间属于方法重载的是(AC )。

A、int f1(){}

int f1(int a){}

B、void f1(int a){}

int f1(int a){}

C、void f1(){}

int f1(int a){}

D、int f1(int b){}

int f1(int a){}

7、在Java中,关于构造方法,下列说法错误的是(C )。

A、构造方法的名称必须与类名相同

B、构造方法可以带输入参数

C、类必须显式定义构造函数

D、构造方法不能带返回参数

8、在Java中,下列(AC )可以成为类Orange的构造方法。

A、public Orange(){…}

B、public void Orange() {…}

C、public Orange(String s) {…}

D、public String Orange(String s) {…}

封装课后练习

一、选择题

1、下列选项中关于Java中封装的说法错误的是(D )。

A、封装就是将属性私有化,提供公有的方法访问私有属性

B、属性的访问方法包括setter方法和getter方法

C、setter方法用于赋值、getter方法用于取值

D、包含属性的类都必须封装属性,否则无法通过编译

2、在Java中,包有多种用途,但不包含( C)。

A、将类组合成较小的单元,便于使用

B、有助于避免命名冲突

C、有助于提高运行效率

D、允许在更广的范围内保护类、数据和方法

3、在Java中,包com中定义了类TestUtil,在com的子包util中定义了同名类TestUtil,给定如下Java代码,编译运行时,将发生(D )。

package net;

import il;

import il;

public class Test {

public static void main(String[] args) {

TestUtil testutil = new TestUtil();

}

}

A、创建了一个il对象

B、创建了一个il对象

C、创建了一个il对象和一个il对象

D、编译无法通过

4、在Java中,在包中有一个类Test,则在类Test中创建包语句正确的是(B)。

A、package ;

B、package ;

C、import ;

D、use ;

5、在Java中,关于在类中导入包的理解错误的是( D)。

A、导入包即声明在当前类中要使用到的别的类所处的位置

B、使用import关键字导入包

C、既可以导入系统提供的包又可以导入用户自定义的包

D、导入包的语句可以写在Java类定义的任何位置

6、在Java中,关于权限访问控制符的理解错误的是(B D)。

A、使用默认权限访问控制符修饰的成员只能被本包内的类访问

B、使用protected修饰的成员只能被本类及其子类内被访问

C、使用public修饰的成员可以被本工程内所有的类访问

D、可以使用private修饰类和类的成员

7、下面选项中关于Java中this关键字的说法错误的是(CD )。

A、this是在对象内部指代自身的引用

B、使用this可以区分实例变量与局部变量之间同名的问题

C、this可以出现在static方法中,可以调用static变量

D、this不可以出现在构造方法中

8、在Java中,以下程序编译运行后的输出结果为(D )。

public class Test {

int x, y;

Test(int x, int y) {

this.x = x;

this.y = y;

}

public static void main(String[] args) {

Test pt1, pt2;

pt1 = new Test(3, 3);

pt2 = new Test(4, 4);

(pt1.x + pt2.x);

}

}

A、6

B、3 4

C、8

D、7

继承课后练习

一、选择题

1、Java中,如果类C是类B的子类,类B是类A的子类,下面描述正确的是( A)。

A、C不仅继承了B中的公有成员,同样也继承了A中的公有成员

B、C只继承了B中的成员

C、C只继承了A中的成员

D、C不能继承A或B中的成员

2、给定如下Java代码,在下划线处可以填入的语句为(CD )。

class Person {

public int a;

public int change(int m) {

return m;

}

}

public class Teacher extends Person {

public int b;

public static void main(String arg[]) {

Person p = new Person();

Teacher t = new Teacher();

int i;

________ //此处填写代码

}

}

A、i = b;

B、i = a;

C、i = (30);

D、i = t.b;

3、阅读下面的Java代码,运行结果为(A )。

public class F{

private F(){

n("in F constructor");

}

}

public class S extends F{

public S(int a){

n("in S constructor");

}

public static void main(String[] args){

new S(5);

}

}

A、程序错误,无法编译

B、可以编译,运行时抛异常

C、in S constructor

D、in F constructor

in S constructor

4、给定如下Java代码,下面( D)代码能被合理地添加到下划线的位置,从而实现方法重写。

class Base{

public void method(int i){}

}

public class Scope extends Base{

public static void main(){}

________ //此处填写代码

}

A、public void method () { }

B、public void method (double i) { }

C、public void method (long i) { }

D、public void method (int i) { }

5、分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在添加代码处应填入( AD)。

class A {

public void test() {

n("A类的test()方法");

}

}

class B extends A {

public void test() {

n("B类的test()方法");

}

public static void main(String args[]) {

//此处添加代码

}

}

A、 A a = new B();

();

B、 A a = new A();

();

C、 B b = new A();

();

D、 B b = new B();

();

6、分析下面的Java代码段,则选项中( B)方法无法在Child类中定义。

public class Parent {

public int addValue(int a, int b) {

return a + b;

}

}

class Child extends Parent{

//在此处定义方法

}

A、 public int addValue(int a, int b) {

return a + b;

}

B、 public void addValue(int a,int b){}

C、 public int addValue(int a) {

return a;

}

D、 public int addValue(double a, double b){

return (int)a + (int)b;

}

7、以下关于Object类说法错误的是(B )。

A、一切类都直接或间接的继承自Object类

B、接口亦继承Object类

C、Object类中定义了toString()方法

D、Object类在包中

8、给定如下Java代码,关于super的用法,以下描述正确的是(C )。

class C extends B {

public C() {

super();

}

}

A、用来调用类B中定义的super()方法

B、用来调用类C中定义的super()方法

C、用来调用类B的无参构造方法

D、用来调用类B中第一个出现的构造方法

9、在Java中,以下代码的输出结果是(A )。

class Base{

Base(){

n("Base");

}

}

public class Checket extends Base{

Checket(){

n("Checket");

super();

}

public static void main(String argv[]){

Checket c = new Checket();

}

}

A、编译时出错

B、Checket Base

C、Base Checket

D、运行时出错

抽象类和接口课后练习

一、选择题

1、阅读以下Java 代码,可以填入横线处的是( A)。

public interface Printer{

________

}

a) void print();

b) public void print(){}

c) private print();

d) static print();

2、在Java 中,阅读如下代码,则编译运行后的输出结果是( D)。

interface Face {

int counter=40;

}

public class Test implements Face{

private static int counter;

public static void main(String[] args) {

n(++counter);

}

}

a) 40

b) 41

c) 0

d) 1

3、接口就是某个事物对外提供的一些功能的说明,在Java 中,使用(B )关键字来定义一

个接口。

a) class

b) interface

c) extends

d) implements

4、在Java 中,已定义两个接口B 和C,要定义一个实现这两个接口的类A,以下语句正确

的是(C )。

a) interface A extends B,C

b) interface A implements B,C

c) class A implements B,C

d) class A implements B,implements C

5、给定如下Java 程序代码,在下划线处加入(AB )语句,可以使这段代码编译通过。

interface Parent{

public int count(int i);

}

public class Test implements Parent {

public int count(int i){

return i % 9;

}

public static void main(String[] args){

________________

int i = (20);

}

}

a) Test p = new Test();

b) Parent p = new Test();

c) Parent p = new Parent();

d) Test p = new Parent();

6、下面的Java 程序运行后,产生的结果是( D)。

interface A{

int x = 0;

}

class B{

int x = 1;

}

class C extends B implements A {

int x = 2;

public void pX(){

n(x);

}

public static void main(String[] args) {

new C().pX();

}

}

a) 产生编译期错误

b) 程序运行,输出结果为0

c) 程序运行,输出结果为1

d) 程序运行,输出结果为2

7、在Java 接口中,下列选项中属于有效的方法声明是(AB )。

a) public void aMethod();

b) void aMethod();

c) void aMethod(){}

d) private void aMethod();

8、如下对于Java 中的接口和抽象类的说法错误的是( D)。

a) 接口和抽象类都不能被实例化

b) 接口和抽象类都包含可以抽象方法,但不是必须

c) 抽象类中可以为部分方法提供默认的实现

d) 一个类只能继承一个直接父类、只能实现一个接口

9、给定如下Java 代码,下列选项中说法正确的是( AC)。

import .*;

interface Moveable {

int DEFAULT_SPEED = 90;

}

class Car implements Moveable {

}

a) 在接口Moveable 中声明的DEFAULT_SPEED 属于常量

b) 在Car 类中,DEFAULT_SPEED 可以被重新赋值

c) 程序编译时,会自动给接口Moveable 中声明的DEFAULT_SPEED 加上public、static、final 修饰符

d) 程序编译时,会自动给接口Moveable 中声明的DEFAULT_SPEED 加上protected、static、final 修饰符

10、在Java 中,下列关于接口的描述错误的是( C)。

a) 接口是一些方法特征的集合,但没有方法的实现

b) 接口中的方法在不同的实现类中可以有完全不同的行为

c) 接口中可以声明变量

d) 接口中可以声明常量

二、简答题

1.代码阅读:请说明下面的代码中存在什么样的问题,该如何解决?

public interface Utility {}

class Phone implements Utility {

void use(){

n("using phone");

}

}

public class Test {

public static void main(String[] args) {

Utility util = new Phone();

();

}

}

Utility接口中不存在use方法;

在Test的main方法中,当把Phone类型的对象向上转型为Utility类型后,只能调用Utility类型中具有的方法,因此();语句出现错误。

两种解决办法:

a) 在Utility中增加方法use();

b)在Test的main方法中这样写:

Phone phone= new Phone();

();

2.阅读如下Java 代码,请指出其中存在的错误,并说明错误原因。

public interface Constants {

int MAX = 10000;

int MIN = 1;

}

public class Test {

public static void main(String[] args) {

Constants con = new Constants();

n();

int i = 50;

if(i>){

= i;

}

}

}

存在两处错误:

a) Java接口不能被实例化,语句:Constants con = new Constants();

n(); 错误

b) 常量不能被重新赋值,语句: = i;错误

3.代码阅读:阅读如下Java 代码,给出运行结果。

public interface Animal {

void shout();

}

class Dog implements Animal {

public void shout() {

n("W W!");

}

}

class Cat implements Animal {

public void shout() {

n("M M!");

}

}

class Store {

public static Animal get( String choice ) {

if ( IgnoreCase( "dog" )) {

return new Dog();

} else {

return new Cat();

}

}

}

public class AnimalTest {

public static void main(String[] args) {

Animal a1 = ("dog");

();

}

}

控制台输出:W W!

多态课后练习

一、选择题

1、下列Java 代码中Test 类中四个输出语句的输出结果依次是(C )。

class Person {

String name = "person";

public void shout() {

n(name);

}

}

class Student extends Person {

String name = "student";

String school = "school";

}

class Test {

public static void main(String[] args) {

Person p = new Student();

(p instanceof Student);

(p instanceof Person);

(p instanceof Object);

(p instanceof System);

}

}

a) true、false、true、false

b) false、true、false、false

c) true、true、true、编译错误

d) true、true、false、编译错误

2、在Java 中,多态的实现不仅能减少编码的工作量,还能大大提高程序的可维护性及可扩展性,那么实现多态的步骤包括以下几个方面除了( B)。

a) 子类重写父类的方法

b) 子类重载同一个方法

c) 定义方法时,把父类类型作为参数类型;调用方法时,把父类或子类的对象作为参数传入方法

d) 运行时,根据实际创建的对象类型动态决定使用哪个方法

3、给定如下Java 代码,编译运行后,输出结果是( C)。

public class Car {

public String name;

public Car(){

name = "Car";

}

public Car(String name){

= name;

}

public void method(){

n(name);

}

}

public class Benz extends Car{

public Benz(){

super("Benz1");

name="Benz2";

}

public static void main(String[ ] args) {

Car c = new Benz();

();

}

}

a) Benz1

b) Benz1Benz2

c) Benz2

d) Car

4、针对如下Java 程序,下面选项中可以填入下划线处的是( AD)。

class Person {

public void eat() {

n("eating with mouth");

}

}

class Chinese extends Person {

public void eat() {

n("eating rice by chopsticks");

}

public void shadowBoxing() {// 练习太极拳

n("practice shadowBoxing every morning ");

}

}

class Test {

public static void main(String[] args) {

______________

}

}

a) Chinese ch=new Chinese();

Boxing();

b) Person person =new Chinese();

Boxing();

c) Chinese ch=new Person();

();

d) Person person=new Chinese ();

();

5、编译运行如下Java 代码,输出结果是(A )。

class Base {

public void method(){

n ("Base method");

}

}

class Child extends Base{

public void method(){

n ("Child method");

}

}

class Test {

public static void main(String[] args) {

Base base =new Base();

();

Child child=new Child();

();

Base bch= new Child();

();

}

}

a)

Base method

Child method

Child method

b)

Base method

Child method

Base method

c)

Base method

Base method

Child method

d) 编译错误

二、简答题

说明:请同学自己阅读代码找出问题,不要将代码粘贴到IDE

中运行查看错误。

1.代码改错:请指出如下Java 代码中存在的错误,并改正。

class AccpTeacher {

public void giveLesson(){

n("知识点讲解");

n("总结提问");

}

}

class AccpDBTeacher extends AccpTeacher {

public void giveLesson(){

n("启动 SqlServer");

sson();

}

public void sayHi(){

n("Hi");

}

}

class Test {

public static void main(String[] args) {

AccpTeacher t = new AccpDBTeacher ();

();

sson();

}

}

2.代码改错与阅读:请指出如下Java 代码中存在的错误,并解释原因。注释错误语句后的

输出结果是什么?并解释原因。

class Person {

String name;

int age;

public void eat() {

n("person eating with mouth");

}

public void sleep() {

n("sleeping in night");

}

}

class Chinese extends Person {

public void eat() {

n("Chinese eating rice with mouth by

chopsticks");

}

public void shadowBoxing() {

n("practice shadowBoxing every morning ");

}

}

class Test {

public static void main(String[] args) {

Chinese ch=new Chinese();

();

();

Boxing();

Person p=new Chinese();

();

();

Boxing();

}

}

3.代码改错与阅读:请指出如下Java 代码中存在的错误,并解释原因。注释错误语句后的

输出结果是什么?并解释原因。

abstract class Shape { // 几何图形

public abstract double getArea();

}

class Square extends Shape {

private double height = 0; // 正方形的边长

public Square(double height) {

= height;

}

public double getArea() {

return ( * );

}

}

class Circle extends Shape {

private double r = 0; // 圆的半径

private final static double PI = 3.14; // 圆周率

public Circle(double r) {

this.r = r;

}

public double getArea() {

return (PI * r * r);

}

}

class TestShape {

public static void main(String[] args) {

Shape square = new Square(3);

Shape circle = new Circle(2);

n(a());

n(a());

Square sq = (Square) circle();

n(a());

}

}

4.程序编码:编码创建一个打印机类Printer,定义抽象方法print();创建两个子类针式打印机类

DotMatrixtPrinter 和喷墨打印机类InkpetPrinter,并在各自类中重写方法print(),编写测试

类实现两种打印机打印。再添加一个激光打印机子类LaserPrinter,重写方法print(),修改测试类

实现该打印机打印。

北京阿博泰克北大青鸟信息技术有限公司

内部类课后练习

一、选择题

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

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

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

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

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

2、在Java 中,阅读如下代码,则编译运行后的输出结果是( D)。

public class TestI {

public int x=1;

private int y=2;

class classinnerA{

protected void method1(){

("method1");

}

class classinnerAB{

private void method2(){

float ab=x+y+z;

}

}

}

class classinnerB extends TestI{

public float z=3;

}

}

a) 编译通过,ab 的值运行后为6

b) 编译报错,提示不能访问x

c) 编译报错,提示不能访问y、z

d) 编译报错,提示不能访问z

3、static、abstract、final、private 都可以用于修饰静态内部类。(A)

a) 正确

b) 错误

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

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

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

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

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

5、public class OuterClass {

private double d1 = 1.0;

//insert code here

}

You need to insert an inner class declaration at line 3,Which two inner class

declarations are valid? (CE)

a) class InnerOne{

public static double methoda() {return d1;}

}

b) public class InnerOne{

static double methoda() {return d1;}

}

c) private class InnerOne{

double methoda() {return d1;}

}

d) static class InnerOne{

protected double methoda() {return d1;}

}

e) abstract class InnerOne{

public abstract double methoda();

}

二、简答题

1.Anonymous Inner Class 是否可以extends 其它类?是否可以implements 接口?

2.内部类可以引用它包含类(也就是外部类)的成员吗?有没有什么限制?

3.如下java 代码是否可以编译通过?如果存在错误,如何解决?如果编译通过,输出结

果是什么?

public class OuterClass {

private class InterClass {

public InterClass() {

n("InterClass Create");

}

}

public OuterClass() {

InterClass ic = new InterClass();

n("OuterClass Create");

}

public static void main(String[] args) {

OuterClass oc = new OuterClass();

}

}

异常课后练习

一、选择题

1、在Java 中,编写一个名为count 的方法,如果传入的int 型参数为0,则抛出异常,异常输出信息为“参数不正确!”, 下列方法符合上述要求的是(C)。

a)

public void count(int i) throw Exception{

if(i==0)

throw new Exception("参数不正确!");

}

b)

public void count(int i) throw Exception{

if(i==0)

throw Exception("参数不正确!");

}

c)

public void count(int i) throws Exception{

if(i==0)

throw new Exception("参数不正确!");

}

d)

public void count(int i) throws Exception{

if(i==0)

throw Exception("参数不正确!");

}

2、在Java 中,以下程序编译运行后的输出结果是(public class Test {

public void add(int i) throws NullPointerException{

if(i==0)

throw new NullPointerException();

n("add 出现异常");

}

public static void main(String[] args) {

)。

Test t = new Test();

try{

(0);

n("add 方法返回");

}catch(Exception e){

n("捕获异常");

}

}

}

北京阿博泰克北大青鸟信息技术有限公司

a) add 出现异常

b) add 出现异常

add 方法返回

c) add 方法返回

捕获异常

d) 捕获异常

3、Java 中的错误处理是通过异常处理模型来完成的,那么异常处理模块可以处理的错误是

()。

a) 运行时错误

b) 逻辑错误

c) 语法错误

d) 内部错误

4、Java 异常处理机制主要为了捕获( )错误,发生错误时,将引发异常,该异常由一个

Java 代码块捕获。

a) 编译期

b) 运行期

c) 测试期

d) 调试期

5、在Java 中,尝试对null 对象操作时,会产生( )类型的异常。

a) ArithmeticException

b) NullPointerException

c) IOException

d) ClassNotFoundException

6、在Java 中,出现算术异常时,会抛出( )异常。

a) ArithmeticException

b) NullPointerException

c) IOException

d) ClassNotFoundException

7、在Java 的异常处理模型中,下列类在多重catch 中同时使用时,( )应该最后列出。

a) ArithmeticException

b) NullPointerException

c) IOException

d) Exception

8、在Java 的异常处理模型中,用户自定义的异常类应该是( )的子类。

a) Exception

b) NullPointerException

c) ClassNotFoundException

d) IllegalArgumentException

北京阿博泰克北大青鸟信息技术有限公司

9、下面有关Java 异常处理模型的说法错误的是( )。

a) 一个try 块只能有一条catch 语句

b) 一个try 块中可以不使用catch 语句

c) catch 块不能单独使用,必须始终与try 块在一起

d) finally 块不能单独使用,必须始终与try 块在一起

10、在Java 的异常处理模型中,无论是否发生异常,( )块中的代码都会被执行。

a) Exception

b) catch

c) finally

d) throw

二、简答题

1、分析下列Java 代码,能编译通过么?

public class Test {

public static void main(String[] args) {

int numOne = 10;

int numTwo = 0;

try {

int c = numOne/numTwo;

} catch (ArithmeticException ex) {

n("除数不能为0");

} catch (Exception ex) {

n("发现异常");

} finally {

n("这是finally");

}

}

}

2、简述Java 中的异常处理机制的简单原理和应用。

3、简述error 和exception 有什么区别。

4、try {}里有一个return 语句,那么紧跟在这个try 后的finally {}里的code 会不会被执行,

什么时候被执行,在return 前还是后?

5、简述运行时异常与一般异常有何异同点。


本文标签: 方法 代码 错误 编译 运行