Ch4类和对象练习题之简答题

2019-06-11 22:23

Ch4类和对象练习题之方法

一 简答题

1、 如果在一个返回值的方法中,不写return语句会发生什么错误?在返回值类型为void

的方法中可以有return语句吗?下面的方法中的return语句是否会导致语法错误? public static void xMethod(double x,double y){

System.out.println(x+y); return x+y;}

如果在一个返回值的方法中,不写return语句会发生无效的数据操作错误。在返回值类型为void的方法中可以有return语句。会导致语法错误。

2、 什么是值传递?给出下面程序运行的结果,分别给出调用max之前、刚进入max方法、

max方法刚要返回之前以及max方法返回之后堆栈的内容。 public class Test{

public statci void main(String[] args){ int max=0;

max(1,2,max);

System.out.println(max);

}

public static void max(int value1,int value2,int max){ if(value1>value2) max=value1; else

max=value2; } }

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

结果是0.调用max之前是0,刚进入max方法是2,max方法刚要返回之前是2,max返回之后是0.

3、 描述传递基本类型参数和传递引用类型参数的区别,给出下面程序的输出。

public class Test{

public static void main(String[] args){ Count myCount=new Count(); int times=0;

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

increment(myCount,times);

System.out.println(“count is”+myCount.count); System.out.println(“times is”+times); }

public static void increment(Count c,int times){ c.count++; times++;

} }

public class Count{

public int count; public Count(int c){ count=c; }

public Count(){ count=1; }

}

基本类型是值传递,引用类型是引用传递.值传递不改变原来的值,引用传递会改变原来的值

结果是count is101 times is0

4、 假设TestClass类的定义如下

publi class TestClass{

int i;

static String s; void method1(){ }

static void method2(){

}

t是TestClass的一个实例,下列哪些语句是正确的? System.out.println(t.i);对 System.out.println(t.s);对 t.method1();对 t.method2();对

System.out.println(TestClass.i);错 System.out.println(TestClass.s);对 TestClass.method1();错 TestClass.method2();对

正确的是System.out.println(t.i); System.out.println(t.s); t.method1();

t.method2();

System.out.println(TestClass.s);

TestClass.method2();

5、 能否从静态方法中调用实例方法或引用一个实例变量?能否从实例方法中调用静态方

法或引用一个静态变量?下面代码错误在哪里? public class Test{

public static void main(String[] args){ method1(); }

public void method1(){ method2(); }

Public static void method2(){

System.out.println(“what is radius”+c.getRadius()); }

Circle c=new Circle(); }

不能从静态方法中调用实例方法或引用一个实例变量,能从实例方法中调用静态方法或引用一个静态变量。错在静态主函数方法不能访问非静态方法method1()。

6、 在下面代码中,Circle类中的radius是私有的,而myCircle是Circle类的一个对象,下面

强调的代码会导致什么问题吗?解释为什么?

public class Circle{ privat double radius=1.0; public double getArea(){ return radius*radius*Math.PI; }

public static void main(String[] args){ Circle myCircle=new Circle();

System.out.println(“Radius is”+myCircle.radius); } }

Circle类的所以对象里radius都是1.0,因为在Circle类中radius是私有的。 7、 描述this关键字的作用,下面代码有什么错误?

public class Test{ private int p; public Test(){

System.out.println(“Test’s no-rgs constructor invoked”); this(0); }

public Test(int p){ p=p; }

public void setP(int p){ p=p; } }

This是java中使用的一个有特定意义的引用,它指向当前对象自身。 this(0)是错误的,this是一个指向当前对象自身的引用,不是方法。 8、 运行下面的程序输出结果是什么?

class A{

public A(){

System.out.println(“A’s no-arg constructor is invoked”); }

}

class B extends A{ }

public class C{

public static void main(String[] args){ B b=new B(); } }

A’s no-arg constructor is invoked

下面的程序在编译时会出现什么问题?

class A{

public A(int x){ } }

class B extends A{ public B(){ }

}

public class C{

public static void main(String[] args){ B b=new B(); } }

父类当中是有参构造函数,而子类是无参,出错

9、 给出下面程序的输出结果,当调用new A(3)时,会调用Object的无参构造方法吗?

public class Test{

public static void main(String[] args){ A a=new A(3);

} }

class A extends B{ public A(int t){

System.out.println(“A’s constructor is invoked”); } }

class B{

public B(){

System.out.println(“B’s constructor is invoked”); } }

B’s constructor is invoked A’s constructor is invoked 会 10、

下面代码中A类和B类在同一个包中,如果问号分别被空白代替、private代替、

protected代替,B类能编译吗?

package p1; public class A{ ? int i; ? void m(){ ....................... } package p1; public classBextends A{ public void m1(String[] args){ System.out.println(i); m(); } 被空白代替B能编译

被private代替B不能编译 被protected代替B能编译 11、 下面代码中A类和B类不在同一个包中,如果问号分别被空白代替、private代替、

protected代替,B类能编译吗?

package p1; public class A{ ? int i; }

被空白代替B不能编译

被private代替B不能编译

被protected代替B不能编译 12、 为什么下面四行代码可以编译,但会导致运行时错误?

(1) Number numberRef=new Integer(0);

(2) Double doubleRef=(Double)numberRef; (3) Number[] numberArray=new Integer[2];

(4) numberArray=new Double(1.5);

(1)(2)因为Integer和Double不是基本数据类型。强制转换只能转换包含继承关系的类或基本类型数据。

(3)(4)因为整数数组里不能放入非整数 13、 (1) (2)

(3)

(4)

class A{ abstract void unfinished(); }

下面抽象类和接口的定义中,哪些是合法的?

class A{ abstract void unfinished(){ } } ? void m(){ ....................... } } package p2; public classBextends A{ public void m1(String[] args){ System.out.println(i); m(); } public class abstract A{ abstract void unfinished(); }

abstract class A{ protected void unfinished(); }


Ch4类和对象练习题之简答题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高压电工复习题(更正)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: