JAVA经典练习题.docx
- 文档编号:23503181
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:19
- 大小:24.47KB
JAVA经典练习题.docx
《JAVA经典练习题.docx》由会员分享,可在线阅读,更多相关《JAVA经典练习题.docx(19页珍藏版)》请在冰豆网上搜索。
JAVA经典练习题
JAVA经典练习题
1.
publicclassReturnIt{
returnTypemethodA(bytex,doubley){ //line2
return(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:
B
A属于方法的重写(重写只存在于继承关系中),因为修饰符和参数列表都一样.B出现编译错误,如下:
Sub.java:
6:
Sub中的getNum()无法覆盖Super中的getNum();正在尝试使用不
兼容的返回类型
找到:
void
需要:
float
publicvoidgetNum(){}
^
1错误
B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private);
重载:
必须具有不同的参数列表;
可以有不同的返回类型,只要参数列表不同就可以了;
可以有不同的访问修饰符;
把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对.
3.
publicclassIfTest{
publicstaticvoidmain(Stringargs[]){
intx=3;
inty=1;
if(x=y)
System.out.println("Notequal");
else
System.out.println("Equal");
}
}
whatistheresult?
Answer:
compileerror错误在与if(x=y)中,应该是x==y; =是赋值符号,==是比较操作符
4.publicclassFoo{
publicstaticvoidmain(Stringargs[]){
try{return;}
finally{System.out.println("Finally");}
}
}
whatistheresult?
A.printoutnothing
B.printout"Finally"
C.compileerror
Answer:
B java的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");
else
System.out.println("even");
}
publicstaticintodd(intx){returnx%2;}
}
whatisoutput?
Answer:
CompileError
7.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(i<5);(注意不要丢了这个分号呦)
AfterExecution,whatarethevalueforiandj?
A.i=6j=5
B.i=5j=5
C.i=6j=4
D.i=5j=6
E.i=6j=6
Answer:
D
9.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)}
whichlineistheearliestpointtheobjectareferedisdefinitelyelibile
tobegarbagecollectioned?
A.Afterline4 B.Afterline5 C.Afterline6
D.Afterline7 E.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.run
B.default
C.implement
D.import
Answer:
B,D
12.publicclassTest{
publicstaticvoidmain(String[]args){
Stringfoo=args[1];
Sringbar=args[2];
Stringbaz=args[3];
}
}
javaTestRedGreenBlue
whatisthevalueofbaz?
A.bazhasvalueof""
B.bazhasvalueofnull
C.bazhasvalueofRed
D.bazhasvalueofBlue
E.bazhasvalueofGreen
F.thecodedoesnotcompile
G.theprogramthrowanexception
Answer:
G
分析:
感觉原应该多一些语句吧,至少应该有红绿蓝的赋值语句之类的,才能叫javaTestRedGreenBlue才能有后面的选项,所以现在感觉很奇怪,不过就这个样子吧.这个问题在于:
数组参数的理解,编译程序没有问题,但是运行这个程序就会出现问题,因为参数args没有给他分配空间那么他的长度应该是0,下面却用拉args[1]........等等的语句,那么定会出现越界错误.
错误如下:
Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:
1
atTest.main(Test.java:
4)
13. intindex=1;
intfoo[]=newint[3];
intbar=foo[index];
intbaz=bar+index;
whatistheresult?
A.bazhasavalueof0
B.bazhasvalueof1
C.bazhasvalueof2
D.anexceptionisthrown
E.thecodewillnotcompile
Answer:
B
分析:
《thinkinginjava》中的原话:
若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值,如下表所示:
基本类型
默认值
boolean
false
char
'\u0000'(null)
byte
(byte)0
short
(short)0
int
0
long
0L
float
0.0f
double
0.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.0 B.1 C.14 D.-15 E.compileerroratline3 F.compileerroratline4
Answer:
C 分析:
int是32位的(范围应该在-231~231-1),按位取反后,后4位是1110,前面的全部是0,所以肯定是14
17.floatf=4.2F;
Floatg=newFloat(4.2F);
Doubled=newDouble(4.2);
Whicharetrue?
A.f==g B.g==g C.d==f D.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.equals()是每个对象与生俱来的方法,因为所有类的最终基类就是Object(除去Object本身);而equals()是Object的方法之一,也就是说equals()方法来自Object类。
观察一下Object中equals()的sourcecode:
publicbooleanequals(Objectobj){return(this==obj);}
注意:
“return(this==obj)”this与obj都是对象引用,而不是对象本身。
所以equals()的缺省实现就是比较“对象引用”是否一致,所以要比较两个对象本身是否一致,须自己编写代码覆盖Object类里的equals()的方法。
来看一下String类的equals方法代码:
publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=count;
if(n==anotherString.count){
charv1[]=value;
charv2[]=anotherString.value;
inti=offset;
intj=anotherString.offset;
while(n--!
=0){
if(v1[i++]!
=v2[j++])
returnfalse;
}
returntrue;
}
}
returnfalse;
}
18. publicclassEquals{
publicstaticvoidadd3(Integeri){
intval=i.intValue();
val+=3;
i=newInteger(val);
}
publicstaticvoidmain(Stringargs[]){
Integeri=newInteger(0);
add3(i);
System.out.println(i.intValue());
}
}
whatis theresult?
A.compilefail B.printout"0" C.printout"3"
D.compilesuccededbutexceptionatline3
Answer:
B 分析:
java只有一种参数传递方式,那就是值传递.(大家可以看我转载的另一个同名文章,会让大家豁然开朗)
19.publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println(6^3);
}
}
whatisoutput?
Answer:
5 分析:
^isyihuo(计算机器上是Xor);异或的逻辑定义:
真^真=假真^假=真假^真=真假^假=假
20.publicclassTest{
publicstaticvoidstringReplace(Stringtext){
text=text.replace('j','l');
}
publicstaticvoidbufferReplace(StringBuffertext){
text=text.append("c");
}
publicstaticvoidmain(Stringargs[]){
StringtextString=newString("java");
StringBuffertextBuffer=newStringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
whatistheoutput?
Answer:
javajavac
分析:
根据我转载的一篇文章
21.publicclassConstOver{
publicConstOver(intx,inty,intz){}
}
whichtwooverloadtheConstOverconstr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 经典 练习题