这段时间出去面试,遇到了很多有意思的题。
话不多说,开始上题
1:
<span style="white-space:pre"> </span>int i = 10;
while(true){
if(--i > 0)
System.out.print(i);
}
程序是结果是什么?
是987654321吗?
运行出来0987654321后运行一段时间会出现2^32-1之后继续减
2:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(0);
list.add(0);
list.add(1);
for(int i = 0; i < list.size(); i++){
if(list.get(i) == 0) list.remove(i);
}
for(int i = 0; i < list.size(); i++){
System.out.print(list.get(i) + " ");
}
结果会把0都删掉吗?
不会的,看ArrayList中的remove函数就知道了,remove(i),会把i之后的数字全移到前一位,所以会存在0“丢失的情况”
以下这个能把0全删除
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(0);
list.add(0);
list.add(1);
for(int i = 0; i < list.size(); i++){
if(list.get(i) == 0){
list.remove(i);
i--;
}
}
for(int i = 0; i < list.size(); i++){
System.out.print(list.get(i) + " ");
}
这两个比较有意思,望各位道友同享乐~