几个陷阱题.docx
《几个陷阱题.docx》由会员分享,可在线阅读,更多相关《几个陷阱题.docx(28页珍藏版)》请在冰豆网上搜索。
![几个陷阱题.docx](https://file1.bdocx.com/fileroot1/2023-2/8/8e5e4d74-1ccc-40ee-820d-24188e7416a1/8e5e4d74-1ccc-40ee-820d-24188e7416a11.gif)
几个陷阱题
几个陷阱题.txt2机会靠自己争取,命运需自己把握,生活是自己的五线谱,威慑呢们不亲自演奏好它?
NO.1找奇数
Java代码
publicclassOddTest{
publicstaticbooleanisOdd(inti){
//returni%2==1;
returni%2!
=0;
}
publicstaticvoidmain(String[]args){
System.out.println(isOdd
(1));
System.out.println(isOdd
(2));
System.out.println(isOdd(3));
}
}
陷阱等级:
★★★☆☆
NO.2浮点数相减
Java代码
publicclassDoubleMinus{
publicstaticvoidmain(String[]args){
System.out.printf(2.0f-1.1f);
}
}
}陷阱等级:
★★★★★
NO.3长整除
Java代码
publicclassLongDivision{
publicstaticvoidmain(String[]args){
finallongMICROS_PER_DAY=24l*60*60*1000*1000;//微秒
finallongMILLIS_PER_DAY=24*60*60*1000;//毫秒
System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);
}
}
陷阱等级:
★★★★★
NO.4互换内容
Java代码
publicclassSwap{
publicstaticvoidmain(String[]args){
intx=1984;
inty=2001;
x^=y^=x^=y;
System.out.println("x="+x+";y="+y);
}
}
陷阱等级:
★★☆☆☆
NO.5字符串和字符
Java代码
publicclassCharAndString{
publicstaticvoidmain(String[]args){
System.out.println("H"+"a");
System.out.println('H'+'a');
}
}
publicclassCharAndString{
publicstaticvoidmain(String[]args){
System.out.println("H"+"a");
System.out.println('H'+'a');
}
}
陷阱等级:
★★★★★
NO.6字符数组
Java代码
publicclassCharArray{
publicstaticvoidmain(String[]args){
Stringletters="ABC";
char[]numbers={'1','2','3'};
System.out.print(numbers);
System.out.print(letters+"easyas"+numbers);
}
}
publicclassCharArray{
publicstaticvoidmain(String[]args){
Stringletters="ABC";
char[]numbers={'1','2','3'};
System.out.print(numbers);
System.out.print(letters+"easyas"+numbers);
}
}
陷阱等级:
★★★★☆
NO.7转义字符
Java代码
publicclassUnicodeTest{
publicstaticvoidmain(String[]args){
System.out.println("a\u0022.length()+\u0022b".length());
}
}
publicclassUnicodeTest{
publicstaticvoidmain(String[]args){
System.out.println("a\u0022.length()+\u0022b".length());
}
}陷阱等级:
★★☆☆☆
NO.8打印输出类名
Java代码
publicclassMyClass{
publicstaticvoidmain(String[]args){
System.out.println(MyClass.class.getName().replaceAll(".","/")+".class");
}
}
publicclassMyClass{
publicstaticvoidmain(String[]args){
System.out.println(MyClass.class.getName().replaceAll(".","/")+".class");
}
}
陷阱等级:
★★☆☆☆
NO.9随机数的问题
Java代码
importjava.util.Random;
publicclassRandomTest{
privatestaticRandomrnd=newRandom();
publicstaticvoidmain(String[]args){
StringBufferword=null;
switch(rnd.nextInt
(2)){
case1:
word=newStringBuffer("P");
case2:
word=newStringBuffer("G");
default:
word=newStringBuffer("M");
}
word.append('a');
word.append('i');
word.append('n');
System.out.println(word);
}
}
importjava.util.Random;
publicclassRandomTest{
privatestaticRandomrnd=newRandom();
publicstaticvoidmain(String[]args){
StringBufferword=null;
switch(rnd.nextInt
(2)){
case1:
word=newStringBuffer("P");
case2:
word=newStringBuffer("G");
default:
word=newStringBuffer("M");
}
word.append('a');
word.append('i');
word.append('n');
System.out.println(word);
}
}陷阱等级:
★★★★☆
NO.10无情的增量操作
Java代码
publicclassForTest{
publicstaticvoidmain(String[]args){
intj=0;
for(inti=0;i<100;i++){
j=j++;
}
System.out.println(j);
}
}
publicclassForTest{
publicstaticvoidmain(String[]args){
intj=0;
for(inti=0;i<100;i++){
j=j++;
}
System.out.println(j);
}
}陷阱等级:
★★★★★
NO.11整数边界的问题
Java代码
publicclassWhileTest{
publicstaticfinalintEND=Integer.MAX_VALUE;
publicstaticfinalintSTART=END-100;
publicstaticvoidmain(String[]args){
intcount=0;
for(inti=START;i<=END;i++)
count++;
System.out.println(count);
}
}
publicclassWhileTest{
publicstaticfinalintEND=Integer.MAX_VALUE;
publicstaticfinalintSTART=END-100;
publicstaticvoidmain(String[]args){
intcount=0;
for(inti=START;i<=END;i++)
count++;
System.out.println(count);
}
}
陷阱等级:
★★★★☆
NO.12计数器的问题
Java代码
publicclassClock{
publicstaticvoidmain(String[]args){
intminutes=0;
for(intms=0;ms<60*60*1000;ms++)
if(ms%60*1000==0)
minutes++;
System.out.println(minutes);
}
}
publicclassClock{
publicstaticvoidmain(String[]args){
intminutes=0;
for(intms=0;ms<60*60*1000;ms++)
if(ms%60*1000==0)
minutes++;
System.out.println(minutes);
}
}陷阱等级:
★★★★☆
NO.13优柔寡断的返回值
Java代码
publicclassReturnValue{
publicstaticvoidmain(String[]args){
System.out.println(decision());
}
publicstaticbooleandecision(){
try{
returntrue;
}finally{
returnfalse;
}
}
}
publicclassReturnValue{
publicstaticvoidmain(String[]args){
System.out.println(decision());
}
publicstaticbooleandecision(){
try{
returntrue;
}finally{
returnfalse;
}
}
}陷阱等级:
★★★★☆
NO.14你好,再见
Java代码
publicclassGoodBye{
publicstaticvoidmain(String[]args){
try{
System.out.println("Helloworld");
System.exit(0);
}finally{
System.out.println("Goodbyeworld");
}
}
}
publicclassGoodBye{
publicstaticvoidmain(String[]args){
try{
System.out.println("Helloworld");
System.exit(0);
}finally{
System.out.println("Goodbyeworld");
}
}
}陷阱等级:
★★★★☆
NO.15到底关闭了吗
Java代码
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
publicclassIOTest{
publicstaticvoidmain(String[]args){
}
publicstaticvoidcopy(Stringsrc,Stringdest)throwsIOException{
InputStreamin=null;
OutputStreamout=null;
try{
in=newFileInputStream(src);
out=newFileOutputStream(dest);
byte[]buf=newbyte[1024];
intn;
while((n=in.read(buf))>0)
out.write(buf,0,n);
}finally{
if(in!
=null)in.close();
if(out!
=null)out.close();
}
}
}
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
publicclassIOTest{
publicstaticvoidmain(String[]args){
}
publicstaticvoidcopy(Stringsrc,Stringdest)throwsIOException{
InputStreamin=null;
OutputStreamout=null;
try{
in=newFileInputStream(src);
out=newFileOutputStream(dest);
byte[]buf=newbyte[1024];
intn;
while((n=in.read(buf))>0)
out.write(buf,0,n);
}finally{
if(in!
=null)in.close();
if(out!
=null)out.close();
}
}
}
陷阱等级:
★★★★★
5、无限循环
viewplaincopytoclipboardprint?
publicstaticfinalintEND=Integer.MAX_VALUE;
publicstaticfinalintSTART=END-100;
publicstaticvoidmain(String[]args){
intcount=0;
for(inti=START;i<=END;i++)
count++;
System.out.println(count);
}
publicstaticfinalintEND=Integer.MAX_VALUE;
publicstaticfinalintSTART=END-100;
publicstaticvoidmain(String[]args){
intcount=0;
for(inti=START;i<=END;i++)
count++;
System.out.println(count);
}
上面程序运行的结果是什么?
A:
无限循环。
将i<=END改成i为什么呢?
你知道的,呵呵!
6、计数器问题
viewplaincopytoclipboardprint?
intminutes=0;
for(intms=0;ms<60*60*1000;ms++)
if(ms%60*1000==0)
minutes++;
System.out.println(minutes);
intminutes=0;
for(intms=0;ms<60*60*1000;ms++)
if(ms%60*1000==0)
minutes++;
System.out.println(minutes);
结果跟你想的一样么?
A:
呵呵,括号问题,不多说!
7、到底返回什么?
viewplaincopytoclipboardprint?
publicstaticbooleandecision(){
try{
returntrue;
}finally{
returnfalse;
}
}
publicstaticbooleandecision(){
try{
returntrue;
}finally{
returnfalse;
}
}
true?
false?
A:
一般情况下,不管怎么说try/catch代码块中,finally总是最后被执行的。
8、错误里聚集遍历
viewplaincopytoclipboardprint?
publicstaticvoidmain(String[]args){
Vectorv=newVector();
v.add("one");
v.add("two");
v.add("three");
v.add("four");
Enumerationenume=v.elements();
while(enume.hasMoreElements()){
Strings=(String)enume.nextElement();
if(s.equals("two"))
v.remove("two");
else{
System.out.println(s);
}
}
System.out.println("What'sreallythere...");
enume=v.elements();
while(enume.hasMoreElements()){
Strings=(String)enume.nextElement();
System.out.println(s);
}
}
publicstaticvoidmain(String[]args){
Vectorv=newVector();
v.add("one");
v.add("two");
v.add("three");
v.add("four");
Enumerationenume=v.elements();
while(enume.hasMoreElements()){
Strings=(String)enume.nextElement();
if(s.equals("two"))
v.remove("two");
else{
System.out.println(s);
}
}
System.out.println("What'sreallythere...");
enume=v.elements();
while(enume.hasMoreElements()){
Strings=(String)enume.nextElement();
System.out.println(s);
}
}
运行代码看看结果跟你想的一样么?
A:
一般不建议在遍历聚集的时候对聚集进行操作。
为什么结果是这样呢?
看JDK源码能得到答案。
Enumeration没有实现FailFast操作,如果换成ArrayList,上面的代码可能会出错。
《java与模式》迭代子(iterator)介绍了。
publicStringsubstring(intbeginIndex,intendIndex){
if(beginIndex<0){
thrownewStringIndexOutOfBoundsException(beginIndex);
}
if(endIndex>count){
thrownewStringIndexOutOfBoundsException(endIndex);
}
if(beginIndex>endIndex){
thrownewStringIndexOutOfBoundsException(endI