2009年2月16日 星期一

第138題

Which two code fragments are most likely to cause a StackOverflowError? (Choose two.)

A. int[] x = {1, 2, 3, 4, 5};
for(int y=0; y<6; y++)
System.out.println(x[y]);

B. static int[] x = {7, 6, 54};
static{x[1] = 8; x[4] = 3;}

C. for(int y=10; y<10; y++)
doStuff(y);

D. void doOne(int x){doTwo(x);}
void doTwo(int y){doThree(y);}
void doThree(int z){doTwo(z);}

E. for(int x=0; x<1000000000; x++)
doStuff(x);

F. void counter(int i){counter(++i);}

答案:DF
參考:9-8 StackOverflowError錯誤事件
---------------------------------------------------------
那二個會產生 StackOverflowError?
StackOverflowError=方法不斷的呼叫自己,導至遞回過深而產生所以呼叫的上限
D. void doOne(int x){doTwo(x);}
void doTwo(int y){doThree(y);}
void doThree(int z){doTwo(z);} //出不去
F. void counter(int i){counter(++i);} //出不去

沒有留言:

張貼留言