1.publicclassReturnIt{returnTypemethodA(bytex,doubley){//line2return(short)x/y*2;}}whatisvalidreturnTypeformethodAinline2?答案:返回double类型,因为(short)x将byte类型强制转换为short类型,与double类型运算,将会提升为double类型.2.1)classSuper{2)publicfloatgetNum(){return3.0f;}3)}4)5)publicclassSubextendsSuper{6)7)}whichmethod,placedatline6,willcauseacompilererror?A.publicfloatgetNum(){return4.0f;}B.publicvoidgetNum(){}C.publicvoidgetNum(doubled){}D.publicdoublegetNum(floatd){return4.0d;}Answer:BA属于方法的重写(重写只存在于继承关系中),因为修饰符和参数列表都一样.B出现编译错误,如下:Sub.java:6:Sub中的getNum()无法覆盖Super中的getNum();正在尝试使用不兼容的返回类型找到:void需要:floatpublicvoidgetNum(){}^1错误B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(publicprotecteddefaultprivate);重载:必须具有不同的参数列表;可以有不同的返回类型,只要参数列表不同就可以了;可以有不同的访问修饰符;把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对.3.publicclassIfTest{publicstaticvoidmain(Stringargs[]){intx=3;inty=1;if(x=y)System.out.println(Notequal);elseSystem.out.println(Equal);}}whatistheresult?Answer:compileerror错误在与if(x=y)中,应该是x==y;=是赋值符号,==是比较操作符4.publicclassFoo{publicstaticvoidmain(Stringargs[]){try{return;}finally{System.out.println(Finally);}}}whatistheresult?A.printoutnothingB.printoutFinallyC.compileerrorAnswer:Bjava的finally块会在return之前执行,无论是否抛出异常且一定执行.5.publicclassTest{publicstaticStringoutput=;publicstaticvoidfoo(inti){try{if(i==1){thrownewException();}output+=1;}catch(Exceptione){output+=2;return;}finally{output+=3;}output+=4;}publicstaticvoidmain(Stringargs[]){foo(0);foo(1);24)}}whatisthevalueofoutputatline24?Answer:13423如果你想出的答案是134234,那么说明对return的理解有了混淆,return是强制函数返回,本题就是针对foo(),那么当执行到return的话,output+=4;就不再执行拉,这个函数就算结束拉.6.publicclassIfElse{publicstaticvoidmain(Stringargs[]){if(odd(5))System.out.println(odd);elseSystem.out.println(even);}publicstaticintodd(intx){returnx%2;}}whatisoutput?Answer:CompileError7.classExceptionTest{publicstaticvoidmain(Stringargs[]){try{methodA();}catch(IOExceptione){System.out.println(caughtIOException);}catch(Exceptione){System.out.println(caughtException);}}}IfmethodA()throwsaIOException,whatistheresult?(其实还应该加上:importjava.io.*;)Answer:caughtIOException异常的匹配问题,如果2个catch语句换个位置,那就会报错,catch只能是越来越大,意思就是说:catch的从上到下的顺序应该是:孙子异常-孩子异常-父亲异常-老祖先异常.这么个顺序.8.inti=1,j=10;do{if(i++--j)continue;}while(i5);(注意不要丢了这个分号呦)AfterExecution,whatarethevalueforiandj?A.i=6j=5B.i=5j=5C.i=6j=4D.i=5j=6E.i=6j=6Answer:D9.1)publicclassX{2)publicObjectm(){3)Objecto=newFloat(3.14F);4)Object[]oa=newObject[1];5)oa[0]=o;6)o=null;7)oa[0]=null;8)System.out.println(oa[0]);9)}10)}whichlineistheearliestpointtheobjectareferedisdefinitelyelibiletobegarbagecollectioned?A.Afterline4B.Afterline5C.Afterline6D.Afterline7E.Afterline9(thatis,asthemethodreturns)Answer:D如果6)o=null变成o=9f,并且把7)去掉,那么8)将会输出什么呢?10.1)interfaceFoo{2)intk=0;3)}4)publicclassTestimplementsFoo{5)publicstaticvoidmain(Stringargs[]){6)inti;7)Testtest=newTest();8)i=test.k;9)i=Test.k;10)i=Foo.k;11)}12)}whatistheresult?Answer:compilesuccessedandi=0接口中的intk=0虽然没有访问修饰符,但在接口中默认是static和final的11.whatisreservedwordsinjava?A.runB.defaultC.implementD.importAnswer:B,D12.publicclassTest{publicstaticvoidmain(String[]args){Stringfoo=args[1];Sringbar=args[2];Stringbaz=args[3];}}javaTestRedGreenBluewhatisthevalueofbaz?A.bazhasvalueofB.bazhasvalueofnullC.bazhasvalueofRedD.bazhasvalueofBlueE.bazhasvalueofGreenF.thecodedoesnotcompileG.theprogramthrowanexceptionAnswer:G分析:感觉原应该多一些语句吧,至少应该有红绿蓝的赋值语句之类的,才能叫javaTestRedGreenBlue才能有后面的选项,所以现在感觉很奇怪,不过就这个样子吧.这个问题在于:数组参数的理解,编译程序没有问题,但是运行这个程序就会出现问题,因为参数args没有给他分配空间那么他的长度应该是0,下面却用拉args[1]........等等的语句,那么定会出现越界错误.错误如下:Exceptioninthreadmainjava.lang.ArrayIndexOutOfBoundsException:1atTest.main(Test.java:4)13.intindex=1;intfoo[]=newint[3];intbar=foo[index];intbaz=bar+index;whatistheresult?A.bazhasavalueof0B.bazhasvalueof1C.bazhasvalueof2D.anexceptionisthrownE.thecodewillnotcompileAnswer:B分析:《thinkinginjava》中的原话:若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值,如下表所示:基本类型默认值booleanfalsechar'\u0000'(null)byte(byte)0short(short)0int0long0Lfloat0.0fdouble0.0d千万要小心:当变量作为类的成员使用时,java才确保给定其默认值,。。。。。(后面还有很多话,也很重要,大家一定要看完成,要不然还是不清楚)14.whichthreearevaliddeclaractionofafloat?A.floatfoo=-1;B.floatfoo=1.0;C.floatfoo=42e1;D.floatfoo=2.02f;E.floatfoo=3.03d;F.floatfoo=0x0123;Answer:A,D,F分析:B错误,因为1.0在java中是double类型的,C,E错误同样道理,都是double类型的15.publicclassFoo{publicstaticvoidmain(Stringargs[]){Strings;System.out.println(s=+s);}}whatistheresult?Answer:compileerror分析:需要对s进行初始化,和13题是不是矛盾呢:不矛盾,因为它不是基本类型,也不是类的成员,所以不能套用上述的确保初始化的方法。16.1)publicclassTest{2)publicstaticvoidmain(Stringargs[]){3)inti=0xFFFFFFF1;4)intj=~i;5)6)}7)}whichisdecimalvalueofjatline5?A.0B.1C.14D.-15E.compileerroratline3F.compileerroratline4Answer:C分析:int是32位的(范围应该在-231~231-1),按位取反后,后4位是1110,前面的全部是0,所以肯定是1417.floatf=4.2F;Floatg=newFloat(4.2F);Doubled=newDouble(4.2);Whicharetrue?A.f==gB.g==gC.d==fD.d.equals(f)Ed.equals(g)F.g.equals(4.2);Answer:B,E(网上的答案是B,E;我测试的结果是:true,true,false,false,fasle,fasle,所以答案是:A,B,还请各位大虾明示)分析:以下是我从网络上找到的,但是感觉应用到这个题目上反而不对拉,郁闷中,希望能给大家有所提示,要是你们明白拉,记得给我留言啊!:~1.基本类型、对象引用都在栈中;而对象本身在堆中;2.“==“比的是两个变量在栈内存中的值,而即使变量引用的是两个对象,“==”比的依旧是变量所拥有的“栈内存地址值”;3.