Ch4类和对象练习题之简答题.docx_第1页
Ch4类和对象练习题之简答题.docx_第2页
Ch4类和对象练习题之简答题.docx_第3页
Ch4类和对象练习题之简答题.docx_第4页
Ch4类和对象练习题之简答题.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 Testpublic 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(value1value2)max=value1;elsemax=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;i100;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 is04、 假设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 Circleprivat 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 Testprivate int p;public Test()System.out.println(“Tests 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 Apublic A()System.out.println(“As no-arg constructor is invoked”);class B extends Apublic class C public static void main(String args) B b=new B();As no-arg constructor is invoked下面的程序在编译时会出现什么问题?class Apublic A(int x)class B extends Apublic B()public class C public static void main(String args) B b=new B();父类当中是有参构造函数,而子类是无参,出错9、 给出下面程序的输出结果,当调用new A(3)时,会调用Object的无参构造方法吗? public class Testpublic static void main(String args) A a=new A(3); class A extends B public A(int t)System.out.println(“As constructor is invoked”);class B public B()System.out.println(“Bs constructor is invoked”); Bs constructor is invoked As constructor is invoked会10、 下面代码中A类和B类在同一个包中,如果问号分别被空白代替、private代替、protected代替,B类能编译吗?package p1;public classBextends Apublic void m1(String args)System.out.println(i);m();package p1;public class A ? int i; ? void m().被空白代替B能编译被private代替B不能编译被protected代替B能编译11、 下面代码中A类和B类不在同一个包中,如果问号分别被空白代替、private代替、protected代替,B类能编译吗?package p2;public classBextends Apublic void m1(String args)System.out.println(i);m();package p1;public class A ? int i; ? void m().被空白代替B不能编译被private代替B不能编译被protected代替B不能编译12、 为什么下面四行代码可以编译,但会导致运行时错误?(1) Number numberRef=new Integer(0);(2) Double doubleRef=(Double)numberRef;(3) Number numberArray=new Integer2;(4) numberArray=new Double(1.5);(1)(2)因为Integer和Double不是基本数据类型。强制转换只能转换包含继承关系的类或基本类型数据。(3)(4)因为整数数组里不能放入非整数13、 下面抽象类和接口的定义中,哪些是合法的?class A abstract void unfinished() (1) public class abstract A abstract void unfinished();(2)class A abstract void unfinished();(3) abstract class A protected void unfinished();(4)abstract class A abstract void unfinished();(5)abstract class A protected int unfinished();(6)interface A void print() ;(7)abstrace interface A extends I1,I2 abstract void print() ;(8)abstract interface A print();(9)interface A void print();(10)合法的是(4),(5),(6),(9),(10)14、 下面程序有什么错误?public class Test public static void main(String args) nPrintln(“Welcome to Java!”,5); public static void nPrintln(String message,int n) int n=1; for (int i=0;i0) return 1;else if(n=0) return 0;else if(n0) return -1;没有定义method1函数的返回类型。17、 下面程序有什么错误?(1) public class ShowErrors public static void main(String args) ShowErrors t=new ShowErrors(5); ShowErrors(int)没有定义,应该是ShowErrors().(2) public class ShowErrors public static void main(String args) ShowErrors t=new ShowErrors(); t.x(); X()没有定义,实例不能引用。(3) public class ShowErrors public void method1() Circle c; System.out.println(“what is radius”+c.getRadius(); c=new Circle(); ShowErrors t=new ShowErrors(5); ShowErrors(int)没有定义,应该是ShowErrors().(4) public class ShowErrors public static void main(String args) C c=new C(5.0); System.out.println(c.value); class C int value=2; C(int)没有定义,应该是C()18、 下面代码中的错误是什么? public class Test public static void main(String args) Object fruit=new Fruit(); Object apple=(Apple)fruit; class Apple extends Fruit class Fruit fruit不能被强制转换成apple19、 下面的代码有什么错误? public class Test public static void main(String args) Number x=new Integer(3); System.out.println(Value(); System.out.pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论