Java开发之Java对数组的复制
苏格拉底曾说过,“世界上最快乐的事,莫过于为理想而奋斗。”人生短短数十年,何不为梦想而奋斗一把?其实只要主动追求,梦想并不遥远。总有一天,你会把它攥在手里。
作为写的第一篇Java文章,展望一下开始下面的学习;
数组:
1.数组浅拷贝:
1 public static void main(String[] args) 2 { 3 int [] a={1,3,5,7,8,9}; 4 int[] b=a; //这里赋值的只是数组的地址 5 System.out.println(Arrays.toString(a)); 6 b[2]=21; //所以当修改数组b时数组a也会随着改变 7 System.out.println(Arrays.toString(a)); 8 System.out.println(Arrays.toString(b)); 9 /*输出结果为:[1, 3, 5, 7, 8, 9] 10 [1, 3, 21, 7, 8, 9] 11 [1, 3, 21, 7, 8, 9] 12 */ 13 }
浅拷贝:两个变量共同指向同一对象;
2.数组深拷贝:
public static void main(String[] args) { int [] a={1,3,5,7,8,9}; int[] b=a.clone();//这就是把数组a的内容复制一份给数组b System.out.println(Arrays.toString(a)); b[2]=21; System.out.println(Arrays.toString(b)); /*运行结果: * [1, 3, 5, 7, 8, 9] [1, 3, 21, 7, 8, 9] */ }
小结:
数组的复制现在至少有四个思路:
- 使用循环结构 这种方法最灵活。唯一不足的地方就是代码比较多
- 使用Object 类的clone()方法,这种方法最简单,得到原数组的一个副本。灵活性也最差,效率最差尤其是在数组元素很大或者复制对象数组时。
- 使用System的arraycopy这种方法被告知速度最快,并且灵活性也较好,可以指定原数组名称,以及元素的开始位置,复制的元素的个数,目标数组名称,目标数组的位置。
- Array类的copyOf()方法与copyOfRange()方法可实现对数组的复制