请问为什么下面代码显示[1,3],而不是[2,3]
import java.util.ArrayList;
public class Z {
public static void main(String[] args){
ArrayList a=new ArrayList<>();
a.add(1);
a.add(2);
a.add(3);
a.remove(1);
System.out.println(a);
}
}
不好意思,不好意思,大家。
我之前编辑错了标题,想问ArrayList的remove方法有2个重载的:remove(o:Object):boolean和 remove(index:int ):E,想说这里为什么a.remove(1)不是调用的remove(o:Object)方法呢(其中int 类型的1自动转换为包装类Integer)?
a.remove(1) 参数是int值 就用remove(index:int )。如果参数是一个对象就使用remove(o:Object),int 类型的1不需要转换为Integer。
remove(角标),角标是从0开始
数组中序号是从0开始的.
a.remove(1),删除的是数组中 第二个 元素 也就是你第二个添加的2
a.remove(1)移除的是下标为1的数,也就是第二个
a.remove(1)移除的是下标为1的数,也就是第二个,
首先你要明白申请出来的数组的长度 如果你申请长度为n的数组,那么他的角标是从 0到(n-1)总共是n个
角标是从0开始的,你a.remove(1) 是移除了第二个,而第二个是2,所以输出就是[1,3]
list的索引起始从0开始,移除索引1,其实是移除了第二个元素了
应为ArrayList的索引和数组一样,从0开始
a.remove(1);删除索引1的数,自然结果是1,3
所以,你a.remove(1);删除的是
a.add(2);
ArrayList a = new ArrayList();
a.add("1"); //添加String类型的就可以删除了
a.add("2");
a.add("3");
a.remove("1");
System.out.println(a);
输出 2、3
a.remove(1)它会先认为你传的就是索引,按照索引能找到数据,就会执行删除.
int是JAVA缺省的8中基本数据类型之一.不是类的对象.
一楼的回答就是对的啊,好奇怪为什么会踩