写点什么

秒懂数组拷贝,感知新境界,java 编程思维百度云

用户头像
极客good
关注
发布于: 刚刚

//**************************************************************


private static void copySelf() {


int[] ids = { 1, 2, 3, 4, 5 };


System.out.println(Arrays.toString(ids));


//System.arraycopy(src, srcPos, dest, destPos, length);


// 把从索引 0 开始的 2 个数字复制到索引为 3 的位置上


System.arraycopy(ids, 0, ids, 3, 2);


System.out.println(Arrays.toString(ids));//[1, 2, 3, 1, 2]


}


private static void copyToOther() {


int[] ids = { 1, 2, 3, 4, 5 };


//将数据的索引 1 开始的 3 个数据复制到目标的索引为 0 的位置上


int[] other = new int[5];


System.arraycopy(ids, 1, other, 0, 3);


System.out.println(Arrays.toString(ids));//[1, 2, 3, 4, 5]深复制


System.out.println(Arrays.toString(other));//[2, 3, 4, 0, 0]


}


}

2、Object 数组复制

//如果是类型转换问题,获取整形


private static void getIntegerArrayFromObjectArray() {


Object[] obj1 = { 1, 2, 3, "4", "5" };


Integer[] obj2 = new Integer[5];


try {


System.arraycop


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


y(obj1, 0, obj2, 0, obj1.length);


} catch (Exception e) {


System.out.println("transfer exception:"+e);


}


System.out.println(Arrays.toString(obj1));


System.out.println(Arrays.toString(obj2));


}


//获取 Object 数组中的字符串类型数据


private static void getStringArrayFromObjectArray1() {


Object[] obj3 = { 1, 2, 3, "4", "5" };


String[] obj4 = new String[5];


try {


System.arraycopy(obj3, 2, obj4, 2, 3);


} catch (Exception e) {


//transfer exception:java.lang.ArrayStoreException


System.out.println("transfer exception:"+e);


}


System.out.println(Arrays.toString(obj3));


//[null, null, null, null, null]


System.out.println(Arrays.toString(obj4));


}


//获取 Object 数组中的字符串类型数据


private static void getStringArrayFromObjectArray2() {


Object[] obj3 = { 1, 2, 3, "4", "5" };


String[] obj4 = new String[5];


try {


System.arraycopy(obj3, 3, obj4, 3, 2);


} catch (Exception e) {


System.out.println("transfer exception:"+e);


}


System.out.println(Arrays.toString(obj3));


//[null, null, null, 4, 5]


System.out.println(Arrays.toString(obj4));


obj3[3] = "zhangssan";


System.out.println("查看是浅复制还是深复制~~~~~");


System.out.println(Arrays.toString(obj3));


System.out.println(Arrays.toString(obj4));


}

3、多维数组复制

//多维数组


public static void twoArray() {


int[] arr1 = {1, 2};


int[] arr2 = {3, 4};


int[] arr3 = {5, 6};


int[][] src = new int[][]{arr1, arr2, arr3};


print("原始模样:", src);


int[][] dest = new int[3][];


System.arraycopy(src, 0, dest, 0, 3);


System.out.println("改变前");


print("src = ", src);


print("dest = ", dest);


//原数组改变后观察新数组是否改变,改变->浅复制,不改变->深复制


src[0][0] = -1;


System.out.println("改变后");


print("src = ", src);


print("dest = ", dest);


}

4、对象数组复制

//对象复制


private static void beanCopy() {


User user1 = new User("zs",18);


User user2 = new User("ls",18);


User user3 = new User("ww",18);


User[] userArraySrc = {user1, user2, user3};


User[] userArrayDest = new User[3];


System.out.println("对象复制,原始模样:"+Arrays.toString(userArraySrc));


System.arraycopy(userArraySrc, 0, userArrayDest, 0, userArraySrc.length);


System.out.println("userArrayDest," + Arrays.toString(userArrayDest));


System.out.println("------------改变原对象------------------");


userArraySrc[0] = new User("su",20);


System.out.println("***" + Arrays.toString(userArraySrc));


System.out.println("***" + Arrays.toString(userArrayDest));


}


//二维数组 toString()


private static void print(String string, int[][] arr) {


System.out.print(string);


for (int[] a : arr) {


for (int i : a) {


System.out.print(i + " ");

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
秒懂数组拷贝,感知新境界,java编程思维百度云