读书人

关于ArrayList和数组的疑惑求解答。

发布时间: 2012-03-14 12:01:13 作者: rapoo

关于ArrayList和数组的疑惑,求解答。

Java code
double[] d={3,6,45,2,34,12,56,87,5,11};double[] c=d;Arrays.sort(c);System.out.println(d[0]);

这个段输出什么?
Java code
ArrayList<String> l1 =new ArrayList<String>();l1.add("abc");l1.add("bcd");l1.add("cde");l1.add("def");l1.add("efg");ArrayList<String> l2 = l1;l2.remove(1);System.out.println(l1.get(1));

这段又输出什么?
相信答案很简单就能得到,可是谁能解释下为什么会有这样的输出结果呢?疑惑了几天,找了点资料也没弄明白,还请大牛们给讲解下。

[解决办法]
1. 2
2. cde
同一个意思 对象是直接赋予另一个对象 指向同一个地址
2者基本没区别

[解决办法]
引用d,c指向同一个对象; l1,l2指向同一个对象。不同的引用对同一个对象进行操作。
你说的clone()方法,如果是生成另外一个数据一样的对象,那么底层的实现也是一个一个的赋值吧,与你手动循环赋值没什么差,,
[解决办法]
理解好变量和对象就能明白了
c和d都是变量,它们都指向一个相同的数组对象
sort(c)是把c指向的数组对象排序,因为d也指向该对象,通过d来获取数组对象的元素和c是一样的
List的道理一样
如果要做数组拷贝,可以用LS说的Arrays.copyOf();也可以用System.arraycopy()
for example
int[] a = {1,2,3};
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);

读书人网 >J2SE开发

热点推荐