Java Arrays copyOf() 方法



描述

Java Arrays copyOf(U[] original, int newLength, Class<? extends T[]> newType) 方法複製指定的陣列,必要時截斷或用 false 填充(如果需要),以便副本具有指定的長度。對於原始陣列和副本中都有效的所有索引,這兩個陣列將包含相同的值。對於在副本中有效但在原始陣列中無效的任何索引,副本將包含 false。當且僅當指定的長度大於原始陣列的長度時,才會存在此類索引。

宣告

以下是java.util.Arrays.copyOf(T[] original,int newLength) 方法的宣告

public static <T,​U> T[] copyOf​(U[] original, int newLength, Class<? extends T[]> newType)

型別引數

  • T − 這是返回陣列中物件的類。

  • U − 這是原始陣列中物件的類。

引數

  • original − 這是要複製的陣列。

  • newLength − 這是要返回的副本的長度。

  • newType − 這是要返回的副本的類。

返回值

此方法返回原始陣列的副本,該副本已被截斷或用 false 元素填充以獲得指定的長度。

異常

  • NegativeArraySizeException − 如果 newLength 為負。

  • NullPointerException − 如果 original 為 null。

  • ArrayStoreException − 如果從 original 複製的元素不是可以在 newType 類陣列中儲存的執行時型別。

將物件陣列複製到相同大小的陣列示例

以下示例顯示了 Java Arrays copyOf() 方法的用法。首先,我們建立了一個 Monitor 物件陣列。我們列印了它們。使用 copyOf() 方法建立相同大小的陣列副本並列印。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of same size
      Monitor[] studentArrCopy = Arrays.copyOf(studentArr, studentArr.length, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]

將物件陣列複製到更大大小的陣列示例

以下示例顯示了 Java Arrays copyOf() 方法的用法。首先,我們建立了一個 Monitor 物件陣列。我們列印了它們。使用 copyOf() 方法建立更大大小的陣列副本並列印,附加預設值。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of greater size
      Monitor[] studentArrCopy = Arrays.copyOf(studentArr, studentArr.length + 1, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] null ]

將物件陣列複製到更小大小的陣列示例

以下示例顯示了 Java Arrays copyOf() 方法的用法。首先,我們建立了一個 Monitor 物件陣列。我們列印了它們。使用 copyOf() 方法建立更小大小的陣列副本並列印。

package com.tutorialspoint;

import java.util.Arrays;

public class ArrayDemo {
   public static void main(String[] args) {

      Student[] studentArr = { new Monitor(1, "Julie", false), new Monitor(2, "Robert", true), new Monitor(3, "Adam", false) };

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArr.length; i++) {
         System.out.print(studentArr[i] + " ");
      }
      System.out.print("]\nCopied Arrays: \n");

      // Create copy of the array of lesser size
      Monitor[] studentArrCopy = Arrays.copyOf(studentArr, studentArr.length - 1, Monitor[].class);

      System.out.print("Student Array: [");
      for (int i = 0; i < studentArrCopy.length; i++) {
         System.out.print(studentArrCopy[i] + " ");
      }
      System.out.print("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

class Monitor extends Student{

   boolean priviledges;

   Monitor(int rollNo, String name, boolean priviledges) {
      super(rollNo, name);
      this.priviledges = priviledges;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + ", " + this.priviledges + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] [ 3, Adam, false ] ]
Copied Arrays: 
Student Array: [[ 1, Julie, false ] [ 2, Robert, true ] ]
java_util_arrays.htm
廣告