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
可见,新数组其实也是对原数组对象的修改,也就是说新数组中的对象是原数组对象的引用,两个数组中的对象是相同的。
相关文档:
Inner classes, also called Nested Classes, are nothing but classes that are defined within other classes. The nesting is a relationship between classes, not objects.
Inner classes have clearly two benefits, name control & access control. In Java, this benefit is not as important because Java pa ......
第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为
abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定
......
尽量复用对象,而不是创建新的对象,特别是当一个对象是immutable(不可改变)的时候。 如String对象, String s= new String(“String”); 千万不要这样做,因为这里实际上创建了两个对象。 要避免出现这样的情况, 1是可以用静态工厂函数,来解决,如类库中的Boolean.valueOf(“true”),这种方式要优于n ......
Java, .Net发展方向和前景
JAVA语言发明已有10年历史,在IBM、SUN等公司的推动下已经比较稳定与成熟,获得了大规模企业的普遍应用。时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平台,吸引了400万开发者,在网络技术遍及全球的的今天,更有17.5亿台设备使用JAVA技术.同时, Mustang版本的J2EE正在紧锣 ......
13.1.2 类集框架主要接口
在整个Java类集中最常使用的类集接口是:Collection、List、Set、Map、Iterator、ListIterator、Enumeration、SortedSet、SortedMap、Queue、Map.Entry,这些接口的具体特点如表13-1所示。
表13-1 类集框架接口的具体特点
序 号
接 口
描&nb ......