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