JAVA复制数组和重置数组大小操作

翻看印象笔记发现自己整理过arraycopy()这样一个方法,码字放到这里:

System.arraycopy()是一个静态方法,用来实现重置数组操作

数组复制方法调用和参数列表:

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

src:原数组

srcPos:原数组的开始位置

dest:目标数组

destPos:目的数组的开始位置

length:复制长度

数组复制代码示例:

//originalArray 数组全部复制到targetArray数组
int [] originalArray = new int[10];
int [] targetArray = new int [10];
System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);

通过入参的长度 限制是全部复制还是部分复制

重置数组大小代码示例:

 int [] originalArray = new int[10];
 int [] temp =new int [originalArray.length + 10];
 System.arraycopy(originalArray, 0, temp, 0, originalArray.length);
 //数组重新复制
 originalArray=temp;

以后建议在重置数组或者数组复制时用这个静态方法,效率要比for循环高(来自某本技术书籍)

补充知识:java:复制数组(指定范围内复制)

相关说明

int newArray0[]=copyOf(这里放被复制的数组,这里放要复制的长度);

当复制长度大于被复制的数组长度时,超出部分int类型用0代替,char类型用null代替。

当复制长度小于被复制的数组长度时,只取开头到指定长度位置的部分。

int newArray1[]=copyOfRange(a,b,c);

range(范围)

a:被复制的数组

b:复制的起始位置(元素被包括)

c:复制的终止位置(元素不被包括)

源码

import java.util.Arrays;
class Demo{
 public static void main(String[] args){
 int array0[]={32,82,99};//被复制的数组一
 System.out.println("被复制的数组为:32,82,99 \n 复制长度为7的数组为:");
 int newArray0[]=Arrays.copyOf(array0,7);//复制成长度为7的数组
 for(int n=0;n<newArray0.length;n++){
 System.out.print("["+newArray0[n]+"]");
 }
 System.out.println();//换行
 int array1[]={82,16,33,11,92,01,34};
 System.out.println("被复制的数组为:82,16,33,11,92,01,34 \n 复制从1位置到4位置的数组:");
 int newArray1[]=Arrays.copyOfRange(array1,1,4);//从1位置复制到4位置
 for(int m=0;m<newArray1.length;m++){
 System.out.print("["+newArray1[m]+"]");
 }
 System.out.println();//换行
 }
}

运行结果

以上这篇JAVA复制数组和重置数组大小操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java数组集合的深度复制代码实例

    这篇文章主要介绍了Java数组集合的深度复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java当我们想要对一个数组进行一些操作,同时又不希望对原来的数组数据有影响的时候,使用引用是不能满足我们的需求的, 这时候我们可以使用System.arraycopy()方法实现,对用这两种复制方式,我们习惯称前者为浅复制,后者为深复制.深复制的 实现方法如下: public static void arraycopyTest() { int[

  • java数组复制的四种方法效率对比

    有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? A.for循环逐一复制 B.System.arraycopy C.System.copyof D.使用clone方法 效率:System.arraycopy>clone>Arrays.copyOf>for循环 1.System.arraycopy的用法: public static void

  • Java 数组复制clone方法实现详解

    这篇文章主要介绍了Java 数组复制clone方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.源码 public class Test1 { public static void main(String[] args) { // Student[] arrs = new Student[] { new Student() { id = "22" } }; C# 可以简写法,Java不支持 Student[] arrs

  • 浅谈Java中复制数组的方式

    在Java里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组:如果一个数组发生改变,那么引用同一数组的变量也要发生改变.         以下是归纳的 java 中复制数组的方法:         (1) 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点         (2) 使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点         (3) 使

  • Java中的数组复制(clone与arraycopy)代码详解

    JAVA数组的复制是引用传递,而并不是其他语言的值传递. 1.clone protectedObjectclone() throwsCloneNotSupportedException创建并返回此对象的一个副本."副本"的准确含义可能依赖于对象的类.这样做的目的是,对于任何对象x,表达式: x.clone()!=x为true,表达式: x.clone().getClass()==x.getClass()也为true,但这些并非必须要满足的要求.一般情况下: x.clone().equa

  • JAVA复制数组和重置数组大小操作

    翻看印象笔记发现自己整理过arraycopy()这样一个方法,码字放到这里: System.arraycopy()是一个静态方法,用来实现重置数组操作 数组复制方法调用和参数列表: System.arraycopy(src, srcPos, dest, destPos, length); src:原数组 srcPos:原数组的开始位置 dest:目标数组 destPos:目的数组的开始位置 length:复制长度 数组复制代码示例: //originalArray 数组全部复制到targetAr

  • Java由浅入深细数数组的操作

    目录 1.JVM的内存分布 2.引用类型变量的特点 3.一维数组的使用 3.1定义和初始化 3.2数组的访问 3.3打印数组所有的元素 3.4数组的拷贝 3.5作为参数和返回值 本篇介绍一维数组以及相关操作,二维数组放在下一篇 1.JVM的内存分布 Java的代码是运行在JVM上的,为了方便管理,对所使用的内存按照功能的不同进行了划分,这不是本篇重点,只做简单的介绍: Java虚拟栈:局部变量在这里开辟空间 Java本地方法栈:运行一些由C/C++编写的程序 堆:对象在这里存储,且开辟后的空间使

  • Java自定义长度可变数组的操作

    我们都知道数组是线性的.类型固定.内存地址连续.定长的,主要是数组一旦被定义,那么它的长度也就定下来了,只能添加有限的数据.而长度可变的数组是要将这个长度打破,实现数组数据无限增加 那么定义长度可变的数组就可以用两个数组来实现数组长度的变化.为了避免每次增加数据或删除数据时都要重新开辟空间,我先设定原数组为固定长,在当数组放满时,一次增加一定的长度,这样 节省了开辟空间的时间 因为数组里的数据类型是不确定的,所以用泛型比较好 public class MyList<E> { private i

  • Java由浅入深细数数组的操作下

    目录 1.二维数组的存储 2.二维数组的定义和初始化 3.打印二维数组 4.不规则二维数组 5.Arrays中常用的方法 上一篇介绍完一维数组后,我们来看二维数组 1.二维数组的存储 在C语言中我们说过:二维数组可以看成是特殊的一位数组,比如int arr[2][3],arr可以看成由两个元素组成,即arr[0]和arr[1],arr[0]和arr[1]各自又有三个元素,这句话在Java中同样适用,一维数组中arr存储的是一个地址,二维数组中则是多个地址,以上面的arr数组为例,其在JVM中的存

  • java旋转二维数组实例

    本文实例讲述了java旋转二维数组的操作,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package test; /*  *     1    2    3    4    5     *    16    17    18    19    6     *    15    24    25    20    7     *    14    23    22    21    8     *    13    12    11    10    9  *  *    写一

  • java基础之数组常用操作总结(必看篇)

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public class TestArray{ public static void main(String[] args){ int[] arr={23,45,234,576,34,87,34,12,67}; int max=arr[0]; int min=arr[0]; for(int i=0;i<arr.leng

  • java数组及arrays类对数组的操作实例

    数组的初始化有两种方式 静态初始化: 初始化时由程序员显示置顶每个数组的初始值,由系统决定数组长度.如: int[] a1 = new int[] {1,2,3,4}; 动态初始化:初始化时由程序员只指定数组长度,由系统为数组元素分配初始值.如: int[] a = new int[5]; 写一个类测试一下 package chenlizhi; import java.util.Arrays; public class TestArrays { public static void main(S

  • JAVA对象和字节数组互转操作

    0x01 创建要转换的类和主函数 注意这里一定要实现序列化 package day1; import java.io.Serializable; public class Test360 implements Serializable { @Override public String toString() { return "Test360{" + "name='" + name + '\'' + '}'; } String name="test&quo

  • java使用compareTo实现一个类的对象之间比较大小操作

    首先定义一个对象,注意这个对象必须实现Comparable接口,并重写这个接口的compareTo方法 package cn.demo; public class Student implements Comparable{ private int number=0; //学号 private String name=""; //学生姓名 private String gender=""; //性别 public int getNumber(){ return nu

  • 剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树

    题目一  解法 class Solution { public String reverseOnlyLetters(String s) { char[] chars = s.toCharArray(); int left = 0; int right = chars.length-1; while(left<=right){ char tmp = 0; if(chars[left]>='a'&&chars[left]<='z'||(chars[left]>='A'&

随机推荐