JAVA代码查错.doc_第1页
JAVA代码查错.doc_第2页
JAVA代码查错.doc_第3页
JAVA代码查错.doc_第4页
JAVA代码查错.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

JAVA代码查错(共计15题)1.abstractclassNameprivateStringname;publicabstractbooleanisStupidName(Stringname)大侠们,这有何错误?答案:错。abstractmethod必须以分号结尾,且不带花括号。2.publicclassSomethingvoiddoSomething()privateStrings=;intl=s.length();有错吗?答案:错。局部变量前不能放置任何访问修饰符(private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。3.abstractclassSomethingprivateabstractStringdoSomething();这好像没什么错吧?答案:错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢?(同理,abstractmethod前不能加final)。4.publicclassSomethingpublicintaddOne(finalintx)return+x;这个比较明显。答案:错。intx被修饰成final,意味着x不能在addOnemethod中被修改。5.publicclassSomethingpublicstaticvoidmain(Stringargs)Othero=newOther();newSomething().addOne(o);publicvoidaddOne(finalOthero)o.i+;classOtherpublicinti;和上面的很相似,都是关于final的问题,这有错吗?答案:正确。在addOnemethod中,参数o被修饰成final。如果在addOnemethod里我们修改了o的reference(比如:o=newOther();),那么如同上例这题也是错的。但这里修改的是o的membervairable(成员变量),而o的reference并没有改变。6.classSomethinginti;publicvoiddoSomething()System.out.println(i=+i);有什么错呢?看不出来啊。答案:正确。输出的是i=0。inti属於instantvariable(实例变量,或叫成员变量)。instantvariable有的defaultvalue是0。7.classSomethingfinalinti;publicvoiddoSomething()System.out.println(i=+i);和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?答案:错。finalinti是个final的instantvariable(实例变量,或叫成员变量)。final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。可以修改为finalinti=0;。8.publicclassSomethingpublicstaticvoidmain(Stringargs)Somethings=newSomething();System.out.println(s.doSomething()returns+doSomething();publicStringdoSomething()returnDosomething.;看上去很完美。答案:错。看上去在main里calldoSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。staticmethod不能直接callnon-staticmethods。可改成System.out.println(s.doSomething()returns+s.doSomething();。同理,staticmethod不能访问non-staticinstantvariable。9.此处,Something类的文件名叫OtherThing.javaclassSomethingprivatestaticvoidmain(Stringsomething_to_do)System.out.println(Dosomething.);这个好像很明显。答案:正确。从来没有人说过Java的Class名字必须和其文件名相同。但publicclass的名字必须和文件名相同。10interfaceAintx=0;classBintx=1;classCextendsBimplementsApublicvoidpX()System.out.println(x);publicstaticvoidmain(Stringargs)newC().pX();答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时importjava.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为publicstaticfinal.所以可以通过A.x来明确。11.interfacePlayablevoidplay();interfaceBounceablevoidplay();interfaceRollableextendsPlayable,BounceableBallball=newBall(PingPang);classBallimplementsRollableprivateStringname;publicStringgetName()returnname;publicBall(Stringname)=name;publicvoidplay()ball=newBall(Football);System.out.println(ball.getName();这个错误不容易发现。答案:错。interfaceRollableextendsPlayable,Bounceable没有问题。interface可继承多个interfaces,所以这里没错。问题出在interfaceRollable里的Ballball=newBall(PingPang);。任何在interface里声明的interfacevariable(接口变量,也可称成员变量),默认为publicstaticfinal。也就是说Ballball=newBall(PingPang);实际上是publicstaticfinalBallball=newBall(PingPang);。在Ball类的Play()方法中,ball=newBall(Football);改变了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不能被改变reference的。因此编译器将在ball=newBall(Football);这里显示有错。12. String arrayName =request.getParameterValue(“name”);String pwd = null;int nameLength = arrayName.length;for(int i=0; inameLength; i+) String nameValue = arrayName i ; System.out.println(nameValue);System.out.println(“Hello”+pwd);答案:错。String arrayName =request.getParameterValue(“name”);应该为String arrayName =request.getParameterValues(“name”);13.String str = requset.getparametervalues(“name”); String temp; for (int i=0;istr.length;i+) temp+=stri+” ”; 答案:错。尚未初始化变量 temp。14.abstract class Name private String name;public abstract boolean is Boolean Name (String name) 答案:错。抽象方法后面声明后不用而直接用分号。15.public class Test void addstriy ( ) private String Str = “”;int i = Str.length ( ) ;答案:错。局部变量不能用private修饰。Java程序段结果(共计60题)1.public class Test public static void main(String args) Value v=new Value(); v.i=25; int i=5; second(v,i); System.out.println(v.i+&+i); public static void second(Value v,int i) v.i=0; Value v2=new Value(); i=0; v=v2; System.out.println(v.i+&+i); class Value public int i=15;问:输出程序结果: 输出结果: 15&0 0&52.switch (x)case 1:System.out.println(Test1);break;case 2: case 3: System.out.println(Test3); break; case 4: System.out.println(Test4); break; default: System.out.println(defalut); 问:当X为什么值时打印的结果是Test3. 结果: X=2或者x=33.int number=new int2;for(int i=0;inumber.length;i+) System.out.println(numberi); 问:输出结果是什么。 输出结果: 004: inta=new int;int10b=new int;intc=new int10;intd=new int10;inte=new int10;问:哪个声明方式是正确的。 结果: intd=new int10;inte=new int10;5.try System.out.println(begin exception);System.out.println(end exception!);Return; catch (Exception e) System.out.println(runtime exception);finallySystem.out.println(finally exception);问:当程序运行时,没有发生异常,会输出什么样的结果。 输出结果: begin exceptionend exception!finally exception6.以下代码输出的结果是什么?public class Foo public static void main(String args) String s = “Java-Java”;s.replacesAll(“-”, “*”);System.out.println(“s = ” + s);A)s = Java-JavaB)s = Java*JavaC)无法编译D)运行时错误答案:A7.请写出程序输出结果 Public Class Father() Public Father()System.out.print(“CreateFather”);Public Class Sub Public Sub() System.out.print(“CreateSub”);Public static void main()Father aa = new Father();Sub bb = new Sub();输出结果: CreateFath

温馨提示

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

评论

0/150

提交评论