Java数组的复制(对象数组)
先看看下面的代码,大家猜猜输出是什么
package com.captain.test;
public class ArrayTest {
public static void main(String[] args){
//新建一个对象(OneNum)数组(赋值为5、3、4)
OneNum[] ac = {new OneNum(5),new OneNum(3),new OneNum(4)};
//新建一个与ac同长度的对象(OneNum)数组
OneNum[] newac = new OneNum[ac.length];
//将ac中的对象付给新数组中(newac)
for (int i = 0;i<ac.length;i++){
newac[i] = ac[i];
System.out.print(ac[i].value+";");
}
System.out.println();
//将新数组的第一个元素的值改为10
newac[0].value = 10;
//显示原数组(ac)的第一个元素的值
System.out.print(ac[0].value);
}
}
class OneNum {
public int value;
public OneNum(int i) {
this.value = i;
}
}
输出为:
5;3;4;
10
可见,新数组其实也是对原数组对象的修改,也就是说新数组中的对象是原数组对象的引用,两个数组中的对象是相同的。
相关文档:
转自http://xyiyy.javaeye.com/blog/358401
J2SE5.0后提供了自动装箱与拆箱的功能,此功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的方法,决定是否进行装箱或拆箱动作。例如:
  ......
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。
schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行。
cancel ......
迅雷面试回来,用了整整一下午(不知道怎么说了,其中等待时间都快2小时了),自己感觉笔试和上机还可以,但技术面谈这一关答得不太好,现在再次感觉互联网公司与一般软件公司的区别了,其中一点就是互联网应用在性能上要求很高,谈了一个小时大部分题目感觉都在谈论性能问题,自己在方面一直是弱项,汗啊:(
仔细回忆了 ......