`
endual
  • 浏览: 3545479 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 数组复制

    博客分类:
  • java
 
阅读更多

    java 中实现了把一个数组中的数据复制到另一个数组中的方法,如下

 

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPossrcPos+length-1 之间的组件被分别复制到目标数组中的 destPosdestPos+length-1 位置。

如果参数 srcdest 引用相同的数组对象,则复制的执行过程就好像首先将 srcPossrcPos+length-1 位置的组件复制到一个带有 length 组件的临时数组,然后再将此临时数组的内容复制到目标数组的 destPosdestPos+length-1 位置一样。

If 如果 destnull,则抛出 NullPointerException 异常。

如果 srcnull, 则抛出 NullPointerException 异常,并且不会修改目标数组。

否则,只要下列任何情况为真,则抛出 ArrayStoreException 异常并且不会修改目标数组:

  • src 参数指的是非数组对象。
  • dest 参数指的是非数组对象。
  • src 参数和 dest 参数指的是那些其组件类型为不同基本类型的数组。
  • src 参数指的是具有基本组件类型的数组且 dest 参数指的是具有引用组件类型的数组。
  • src 参数指的是具有引用组件类型的数组且 dest 参数指的是具有基本组件类型的数组。

否则,只要下列任何情况为真,则抛出 IndexOutOfBoundsException 异常,并且不会修改目标数组:

  • srcPos 参数为负。
  • destPos 参数为负。
  • length 参数为负。
  • srcPos+length 大于 src.length,即源数组的长度。
  • destPos+length 大于 dest.length,即目标数组的长度。

否则,如果源数组中 srcPossrcPos+length-1 位置上的实际组件通过分配转换并不能转换成目标数组的组件类型,则抛出 ArrayStoreException 异常。在这种情况下,将 k 设置为比长度小的最小非负整数,这样就无法将 src[srcPos+k] 转换为目标数组的组件类型;当抛出异常时,从 srcPossrcPos+k-1 位置上的源数组组件已经被复制到目标数组中的 destPosdestPos+k-1 位置,而目标数组中的其他位置不会被修改。(因为已经详细说明过的那些限制,只能将此段落有效地应用于两个数组都有引用类型的组件类型的情况。)

 

参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
抛出:
IndexOutOfBoundsException - 如果复制会导致对数组范围以外的数据的访问。
ArrayStoreException - 如果因为类型不匹配而使得无法将 src 数组中的元素存储到 dest 数组中。
NullPointerException - 如果 srcdestnull



public class TestArrayCopy {
public static void main(String args[]) {
    String[] s = 
            {"Mircosoft","IBM","Sun","Oracle","Apple"};
    String[] sBak = new String[6];
    System.arraycopy(s,0,sBak,0,s.length);
    
    for(int i=0;i<sBak.length;i++){
      System.out.print(sBak[i]+" ");
    }
    
    System.out.println();
    int[][] intArray = {{1,2},{1,2,3},{3,4}};
    int[][] intArrayBak = new int[3][];
    System.arraycopy
            (intArray,0,intArrayBak,0,intArray.length);
    intArrayBak[2][1] = 100;
    
    for(int i = 0;i<intArray.length;i++){
        for(int j =0;j<intArray[i].length;j++){
            System.out.print(intArray[i][j]+" "); 
        }
        System.out.println();
    }
}
}
 




分享到:
评论

相关推荐

    java数组复制函数的使用demo

    java学习中数组复制函数的调用方法,供java初学者入门参考使用,分享给大家

    22.java数组的复制.zip

    22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组的复制.zip22.java数组...

    Java数组+数组排序+数组复制+最大最小值+合并数组+数组升降序排序+数组查找

    Java数组: Java数组排序:冒泡排序、选择排序 、插入排序 、快速排序、希尔排序...三种Java数组复制方法 Java数组最大最小值 四种合并Java数组方法 Java数组升降序排序 Java数组查找:二分查找、顺序查找、插值查找法

    Java数组练习题(带答案).doc

    Java数组是Java编程语言中的基本数据结构之一,用于存储固定数量的同类型元素。了解和熟练掌握数组的使用是学习Java的重要环节。本篇练习题涵盖了数组的基本概念、操作和异常处理,下面是针对题目中涉及知识点的详细...

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

    Java 数组复制的四种方法效率对比 Java 数组复制是 Java 编程中非常重要的一个操作,它可以将源数组的元素复制到目标数组中。今天,我们将讨论 Java 数组复制的四种方法,并比较它们的效率。 System.arraycopy ...

    java数组扩容2

     2)利用数组复制方法可以变通的实现数组扩容。  3)System.arraycopy()可以复制数组。  4)Arrays.copyOf()可以简便的创建数组副本。  5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。

    Java数组,Java数组,多线程编程

    Java数组是程序设计中的基本构建块,它允许程序员存储多个相同类型的数据在一个单一的结构中。在Java中,数组是一种对象,它们具有固定的大小,并且一旦创建,就不能更改其长度。数组提供了通过索引来访问其元素的...

    java数组_java_java数组_

    Java数组是Java编程语言中的基本数据结构之一,它允许我们存储多个同类型的元素在一个单一的变量中。数组的使用在程序设计中至关重要,因为它提供了一种高效、有序的方式来管理和访问数据。下面将深入探讨Java数组的...

    java数组

    Java数组是程序设计中不可或缺的基础概念,它是一种数据结构,允许我们存储同类型的多个元素。在Java中,数组是对象,具有固定的大小,一旦创建,其长度就不能改变。本篇文章将深入探讨Java数组的各个方面,包括创建...

    java高端技术课程--Java数组如何实现复制

    Java提供了System类的arraycopy()方法,它是进行数组复制的最直接和高效的方式。该方法接受五个参数:源数组、源数组起始位置、目标数组、目标数组起始位置和复制的元素数量。例如: ```java int[] srcArray = {1...

    java数组函数(摘自JAVA编程思想)

    通过`com.bruceeckel.util`包中的工具类,我们可以更加高效和便捷地处理Java数组,提高代码的可读性和维护性。学习和熟练掌握这些数组函数,对于提升Java编程能力是非常有帮助的。在实际开发中,我们应该充分利用...

    java 数组 PPT

    Java数组是Java编程语言中基本的数据结构之一,它允许存储同一类型的多个元素。在本PPT中,我们将深入探讨Java数组的概念、创建、初始化、访问和操作数组的各种方法。 一、数组的概念 数组是一种线性数据结构,它将...

    java 数组和字符串

    ### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...

    java 数组求和计算

    以上内容涵盖了Java数组求和计算的基本知识以及相关的扩展话题。理解并掌握这些知识点对于进行有效的Java编程至关重要。在实际应用中,根据具体需求,可能还需要考虑性能优化、异常处理等方面的问题。

    5-Java数组与方法

    当你把数组作为参数传递给方法时,实际上是传递了数组的引用,而非复制整个数组。这意味着在方法内部对数组的修改会影响到原始数组。例如: ```java void modifyArray(int[] arr) { arr[0] = 10; } int[] original...

    第03讲 JAVA数组.ppt

    【Java数组】是Java编程语言中基础且重要的数据结构,它允许存储固定数量的相同类型的数据。数组在Java中属于引用类型,也就是说数组本身是一个对象,数组中的每个元素相当于这个对象的成员变量。数组可以包含任何...

    Java数组堆栈

    Java数组堆栈的实现有一些缺点,例如,在扩展数组的大小时,需要复制整个数组,可能会导致性能问题。此外,ArrayStack类不支持多线程访问,可能会导致线程安全问题。 应用场景 Java数组堆栈可以应用于各种场景,...

    Java数组相关的例子代码

    本篇将深入探讨Java数组的相关知识点,并通过实际的例子代码来加深理解。 1. **数组的声明与初始化** 在Java中,我们可以声明一个数组并同时初始化它。例如,创建一个包含5个整数的数组: ```java int[] ...

Global site tag (gtag.js) - Google Analytics