热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JAVASE回顾及思考(2)——数组的复制与动态扩展

我们知道在Java中数组是非基本类型既数组是对象(Object)的子类,所以用下面的这种方式是不能复制该对象的publicstaticvo

我们知道在Java中数组是非基本类型既数组是对象(Object)的子类,所以用下面的这种方式是不能复制该对象的

public static void main(String[] args) {int[] arry1 = new int[]{1, 2, 3, 4};//数组赋值int[] arry2 = arry1; //一个数组对象,两个引用同时引用该对象System.out.println(arry1[1]);System.out.println(arry2[1]);arry1[1] = 8;System.out.println(arry2[1]);}

这样并不能复制数组只是一个简单的赋值操作,下面我们采取另一种方式试一下。

public static void main(String[] args) {int[] arry1 = new int[]{1, 2, 3, 4};int[] arry3 =new int[arry1.length];for(int i=0; i

其实这个Java API中已经提供了一个非常简便并且效率比较高的方法System.arraycopy(src, srcPos, dest, destPos, length),这个方法的底层是用C++写的,比上面的那种for循环实现拷贝效率要高的多。 JDK 1.6以上提供了Arrays.copyOf(src, length)方法,其实这个方法的底层也是arraycopy方法实现的。

public static void main(String[] args) {int[] src = {1, 2, 3, 4};int[] dest = new int[4];System.arraycopy(src, 0, dest, 0, src.length);System.out.println(Arrays.toString(dest));}

public static void main(String[] args) {int[] src = {1, 2, 3, 4};int[] dest = Arrays.copyOf(src, src.length);System.out.println(Arrays.toString(dest));}
学过Java和C语言的知道Java的数组对象的大小是固定的,数组对象是不能扩展的,不过我们可以用上面复制数组的方法来实现数组的动态长度。

System.arraycopy()可以复制数组

Arrays.copyOf()可以简便的创建数组副本

public static void main(String[] args) {char[] cArr = {'大', '碗'};char[] temp = Arrays.copyOf(cArr, 4);temp[2] = '干';temp[3] = '拌';System.out.println(Arrays.toString(temp));}
下面我们通过上面的方法完成一个练习“从一段文字中统计某个字符所有的位置”

package com.dawanganban.test;import java.util.Arrays;public class ArrayCopyTest {public static void main(String[] args) {String str = "统计一个字符在字符串中的所有位置";int[] ary = countAll(str, '字');System.out.println(Arrays.toString(ary));} /*** 统计一个字符在字符串中的所有位置的方法* @param str 被统计的字符串* @param ch 统计的字符* @return 位置数组*/private static int[] countAll(String str, char ch){int[] ary = {};for(int i=0; i}



转:https://www.cnblogs.com/lanzhi/p/6469453.html



推荐阅读
author-avatar
奉召开博_745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有