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
可见,新数组其实也是对原数组对象的修改,也就是说新数组中的对象是原数组对象的引用,两个数组中的对象是相同的。
相关文档:
1、java是跨平台的,是一门解释性语言,一条一条地执行,解释器就是jvm,所以可以跨平台;
C/C++是编译性语言,所有编译完后再执行,跨平台的时候需要重新编译一次,以适应新的平台。
2、向上转型,继承 白马非马
父类对象转化为子类必须强制(SonClass)fatherClass
子类当 ......
第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为
abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定
......
尽量复用对象,而不是创建新的对象,特别是当一个对象是immutable(不可改变)的时候。 如String对象, String s= new String(“String”); 千万不要这样做,因为这里实际上创建了两个对象。 要避免出现这样的情况, 1是可以用静态工厂函数,来解决,如类库中的Boolean.valueOf(“true”),这种方式要优于n ......
13.1.2 类集框架主要接口
在整个Java类集中最常使用的类集接口是:Collection、List、Set、Map、Iterator、ListIterator、Enumeration、SortedSet、SortedMap、Queue、Map.Entry,这些接口的具体特点如表13-1所示。
表13-1 类集框架接口的具体特点
序 号
接 口
描&nb ......
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。
schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行。
cancel ......