首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于ArrayList和数组的疑惑,求解答。该如何处理

2012-03-14 
关于ArrayList和数组的疑惑,求解答。Java codedouble[] d{3,6,45,2,34,12,56,87,5,11}double[] cdArray

关于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);

热点排行