public class Puzzel1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (byte i = 0; i < 10; i++) {
list.add(i);
list.remove(new Integer(i));
}
System.out.println("*");
System.out.println(list.size());
}
}
这个输出是10个为什么?
最佳答案
插入自动装箱后,代码变为:
public class Puzzel1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (byte i = 0; i < 10; i++) {
list.add(Byte.valueOf(i));
list.remove(new Integer(i));
}
System.out.println("*");
System.out.println(list.size());
}
}
Remove 依赖于元素的 equals
方法。
并且由于 Byte.valueOf(i).equals(new Integer(i))
始终为 false,因此元素永远不会被删除
关于java - 输出不是我所期望的。有人能让我明白为什么会这样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199173/