Java Arrays.copyOfRange 方法

Java Arrays.copyOfRange 方法是 Array 方法之一,用于将指定用户范围内的数组项复制到一个新数组中。

在本文中,我们将通过一个示例展示如何使用 copyOfRange 方法将数组元素范围复制到一个新数组中。该编程语言中 Arrays.copyOfRange 的语法如下所示。

Java Arrays.copyOfRange 方法语法

Java 编程语言提供了十种不同的 Arrays.copyOfRange 方法,用于将指定的 Arrays 复制到一个新的数组中。在复制时

  • 如果指定的用户长度大于原始数组,则其余元素将填充为数据类型的默认值。例如,整型数组 a[5] 包含五个元素(1,2 3, 4, 5),但我们将新长度指定为 7(Arrays.copyOfRange(b, 0, 7)),则 b 数组将变为 b[7],包含元素 1, 2, 3, 4, 5, 0, 0(这里,0 是 int 类型的默认值)。
  • 如果用户指定的 to(第三个参数)小于原始数组,则其余元素将被截断。例如,整型数组 a[7] 包含五个元素(15, 22, 10, 45, 3, 65, 54),但我们将新长度指定为 5(Arrays.copyOfRange(b, 1, 4)),则 b 数组将变为 b[3],包含元素 22, 10, 45。

以下 Java Arrays.copyOfRange 方法接受布尔数组,作为第二个参数(整数值)的元素开始复制的起始索引位置(from)。最后一个索引位置(to)是复制结束的位置,作为第三个参数。

注意:此方法将复制从 from 开始到 to(不包含 to)的数组元素。

public static boolean copyOfRange(Boolean[] anBooleanArray, int from, int to); // It will return Boolean Array

//In order to use in program
Arrays.copyOfRange(Boolean[] anBooleanArray, int from, int to);

其余的 Java arrays.copyOfRange 方法。

public static byte copyOfRange(byte[] anByteArray, int from, int to); // It will return Byte Array
Arrays.copyOfRange(byte[] anByteArray, int from, int to);

public static short copyOfRange(short[] anShortArray, int from, int to); // It will return short Array
Arrays.copyOfRange(short[] anShortArray, int from, int to);

public static char copyOfRange(char[] anCharArray, int from, int to); // It will return char Array
Arrays.copyOfRange(char[] anCharArray, int from, int to);

public static short copyOfRange(int[] anIntArray, int from, int to); // It will return Integer Array
Arrays.copyOfRange(int[] anIntArray, int from, int to);

public static long copyOfRange(long[] anLongArray, int from, int to); // It will return Long Array
Arrays.copyOfRange(long[] anLongArray, int from, int to);

public static double copyOfRange(double[] anDoubleArray, int from, int to); // It will return Double Array
Arrays.copyOfRange(double[] anDoubleArray, int from, int to);

public static float copyOfRange(float[] anFloatArray, int from, int to); // It will return float Array
Arrays.copyOfRange(float[] anFloatArray, int from, int to);

public static <T> T[] copyOfRange(T[] Array, int from, int to); 
Arrays.copyOfRange(T[] Array, int from, int to);

public static <T,U> T[] copyOfRange(U[] Array, int from, int to, Class<? extends T[]> newType); 
Arrays.copyOfRange(U[] Array, int from, int to, Class<? extends T[]> newType);
  • Array:这是原始的 数组。我们将使用 Arrays.copyOfRange 方法将此数组复制到一个新数组中。
  • from:请指定元素开始复制到新数组的起始位置。
  • to:请指定结束位置。copyOfRange 方法将复制到此索引位置的数组元素,但不包括它们在新数组中。根据 to,数组元素将被截断或扩展(使用默认值)。
  • newType:请为新数组指定类类型。

Java Arrays.copyOfRange 字节数组

此 Java 程序声明了一个带有随机数组元素的字节数组。接下来,我们将调用 public static byte[] copyOfRange (byte[] anByteArray, int from, int to) 方法,将字节数组复制到一个指定范围(from-to)的新数组中。

// Java Example to Copy Byte Array to New
package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeBytes {
	public static void main(String[] args) {
		byte[] byteArray = {10, 25, 8, 19, 16, 5}; 
		
		//Copying Array
		byte[] bitArray = Arrays.copyOfRange(byteArray, 1, 5);
		System.out.println("New Integer Array after Copying:");
		arrayPrint(bitArray);
		
		//Copying Array
		byte[] biteArray = Arrays.copyOfRange(byteArray, 3, 9);
		System.out.println("New Integer Array after Copying:");
		arrayPrint(biteArray);
	}
	public static void arrayPrint(byte[] anByteArray) {
		for (byte Number: anByteArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
Java Arrays.copyOfRange 1

在此示例中,我们声明了一个字节数组,并使用以下语句为其分配了一些随机值作为数组元素。

byte[] byteArray = {10, 25, 8, 19, 16, 5};

接下来,我们使用 Java Arrays.copyOfRange 方法将 bitArray 元素从索引位置 1 复制到 4。

byte[] bitArray = Arrays.copyOfRange(byteArray, 1, 5);

下一条语句是打印字节数组元素到输出。

arrayPrint(bitArray);

下一行,我们使用 Arrays.copyOfRange 方法将 byteArray 元素从索引位置 3 复制到 5。这意味着剩余的值将填充默认值(零)。

byte[] biteArray = Arrays.copyOfRange(byteArray, 3, 9);

下一条语句是打印字节数组元素到输出。

arrayPrint(byteArray);

当编译器执行到上述语句时,Jcompiler 将跳转到以下函数。

从下面的代码片段可以观察到,我们使用了 Java Foreach 循环来迭代字节数组。然后,我们使用 System.out.println 语句打印每个数组元素。

public static void arrayPrint(byte[] anByteArray) {
	for (byte Number: anByteArray) {
		System.out.println("Array Elelment = " + Number);
	}
}

Java Arrays.copyOfRange 复制布尔数组

在此 Java 程序中,我们声明了一个带有随机元素的布尔数组。然后,我们将调用 public static Boolean[] copyOfRange (boolean[] anBooleanArray, int from, int to) 方法,将布尔数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeBoolean {
	public static void main(String[] args) {
		boolean[] bool = {true, false, false, true, true};
		boolean[] boolArray =  Arrays.copyOfRange(bool, 1, 4);
		System.out.println("New Boolean Array after Copying:");
		arrayPrint(boolArray);
		
		boolean[] bolArray =  Arrays.copyOfRange(bool, 2, 7);
		System.out.println("New Boolean Array with Vlaues:");
		arrayPrint(bolArray);
	}
	public static void arrayPrint(boolean[] anBooleanArray) {
		for (boolean bool: anBooleanArray) {
			System.out.println("Array Elelment = " + bool);
		}
	}
}
New Boolean Array after Copying:
Array Elelment = false
Array Elelment = false
Array Elelment = true
New Boolean Array with Vlaues:
Array Elelment = false
Array Elelment = true
Array Elelment = true
Array Elelment = false
Array Elelment = false

如何复制 Short 数组?

在此程序中,我们声明了一个带有随机数组元素的 short 数组。然后,我们调用 public static Short[] copyOfRange (short[] anShortArray, int from, int to) 方法,将 short 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class ShortCopyOfRange {
	public static void main(String[] args) {
		short[] srtArray = {2, 6, 4, 8, 9, 7, 3}; 
		
		short[] ShortArray = Arrays.copyOfRange(srtArray, 0, 4);
		System.out.println("New Short Array after Copying:");
		arrayPrint(ShortArray);
	}
	public static void arrayPrint(short[] anShortArray) {
		for (short Number: anShortArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Short Array after Copying:
Array Elelment = 2
Array Elelment = 6
Array Elelment = 4
Array Elelment = 8

Java Arrays.copyOfRange 复制整型数组

在此程序中,我们声明了一个带有随机元素的整型数组。然后,我们调用 public static int[] copyOfRange (int[] anIntegerArray, int from, int to) 方法,将 Int 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeIntegers {
	public static void main(String[] args) {
		int[] intArray = {20, 40, 60, 80, 100, 120, 150}; 
		
		int[] integerArray = Arrays.copyOfRange(intArray, 2, 6);
		System.out.println("New Integer Array after Copying:");
		arrayPrint(integerArray);
		
		int[] inteArray = Arrays.copyOfRange(intArray, 4, 9);
		System.out.println("New Integer Array after Copying:");
		arrayPrint(inteArray);
	}
	public static void arrayPrint(int[] anIntArray) {
		for (int Number: anIntArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Integer Array after Copying:
Array Elelment = 60
Array Elelment = 80
Array Elelment = 100
Array Elelment = 120
New Integer Array after Copying:
Array Elelment = 100
Array Elelment = 120
Array Elelment = 150
Array Elelment = 0
Array Elelment = 0

Arrays.copyOfRange 复制 Long 数组

在此程序中,我们声明了一个带有随机元素的 long 数组。然后,我们调用 public static Long[] copyOfRange (long[] anLongArray, int from, int to) 方法,将 Long 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeLong {
	public static void main(String[] args) {
		long[] LngArray = {540, 605, 1250, 2250, 3590, 9865}; 		
		long[] longArray = Arrays.copyOfRange(LngArray, 1, 4);
		System.out.println("New Long Array after Copying:");
		arrayPrint(longArray);
		
		long[] anLongArray = Arrays.copyOfRange(LngArray, 2, 8);
		System.out.println("New Long Array with Vlaues:");
		arrayPrint(anLongArray);
	}
	public static void arrayPrint(long[] anLongArray) {
		for (long Number: anLongArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Long Array after Copying:
Array Elelment = 605
Array Elelment = 1250
Array Elelment = 2250
New Long Array with Vlaues:
Array Elelment = 1250
Array Elelment = 2250
Array Elelment = 3590
Array Elelment = 9865
Array Elelment = 0
Array Elelment = 0

Java Arrays.copyOfRange 复制 Double 数组

在此程序中,我们声明了一个带有随机元素的 double 数组。然后,我们调用 public static Double[] copyOfRange (double[] anDoubleArray, int from, int to) 方法,将 double 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeDoubles {
	public static void main(String[] args) {
		double[] DoubleArray = {143.96, 346.452, 67.89, 897.559, 655.689}; 
		
		double[] dblArray = Arrays.copyOfRange(DoubleArray, 1, 5);
		System.out.println("New Double Array after Copying:");
		arrayPrint(dblArray);
		
		double[] dbArray = Arrays.copyOfRange(DoubleArray, 2, 7);
		System.out.println("New Double Array after Copying:");
		arrayPrint(dbArray);
	}
	public static void arrayPrint(double[] anDoubleArray) {
		for (double Number: anDoubleArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Double Array after Copying:
Array Elelment = 346.452
Array Elelment = 67.89
Array Elelment = 897.559
Array Elelment = 655.689
New Double Array after Copying:
Array Elelment = 67.89
Array Elelment = 897.559
Array Elelment = 655.689
Array Elelment = 0.0
Array Elelment = 0.0

Arrays.copyOfRange 复制 Float 数组

在此程序中,我们声明了一个带有随机元素的浮点数组。然后,我们调用 public static float[] copyOfRange (float[] anFloatArray, int from, int to) 方法,将 float 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;
public class CopyOfFloat {
	public static void main(String[] args) {
		float[] floatArray = {24.54f, 33.98f, 46.68f, 19.25f, 3.95f};
		
		float[] fltArray = Arrays.copyOfRange(floatArray, 1, 4);
		System.out.println("New Float Array after Copying:");
		arrayPrint(fltArray);
		
		float[] ftArray = Arrays.copyOfRange(floatArray, 3, 7);
		System.out.println("New Float Array with Changed Vlaues:");
		arrayPrint(ftArray);
	}
	public static void arrayPrint(float[] anfloatArray) {
		for (float Number: anfloatArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Float Array after Copying:
Array Elelment = 33.98
Array Elelment = 46.68
Array Elelment = 19.25
New Float Array with Changed Vlaues:
Array Elelment = 19.25
Array Elelment = 3.95
Array Elelment = 0.0
Array Elelment = 0.0

Java Arrays.copyOfRange 复制 Char 数组

在此程序中,我们声明了一个字符数组。然后,我们调用 public static Char[] copyofRange (char[] anCharArray, int from, int to) 方法,将 Char 数组复制到一个指定范围的新字符数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeChar {
	public static void main(String[] args) {
		char[] CharArray = {'T', 'u', 't', 'o', 'r', 'i', 'a', 'l'}; 
		char[] ChArray = Arrays.copyOfRange(CharArray, 1, 5);
		System.out.println("New Character Array after Copying:");
		arrayPrint(ChArray);
		
		char[] ChrArray = Arrays.copyOfRange(CharArray, 4, 10);
		System.out.println("New Character Array with Vlaues:");
		arrayPrint(ChrArray);
	}
	public static void arrayPrint(char[] anCharacterArray) {
		for (char Number: anCharacterArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Character Array after Copying:
Array Elelment = u
Array Elelment = t
Array Elelment = o
Array Elelment = r
New Character Array with Vlaues:
Array Elelment = r
Array Elelment = i
Array Elelment = a
Array Elelment = l
Array Elelment = 
Array Elelment = 

Arrays.copyOfRange 复制 Object 数组

在此程序中,我们声明了一个带有随机元素的 String 数组(String 是一个 Object)。然后,我们调用 public static T[] copyOfRange(T[] anArray, int from, int to) 方法,将 Object 数组复制到一个指定范围的新数组中。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeObject {
	public static void main(String[] args) {
		String[] stringArray = {"India", "USA", "UK", "Japan", "China", "Canada"}; 
		String[] strArray = Arrays.copyOfRange(stringArray, 1, 5);
		System.out.println("New Object Array after Copying:");
		arrayPrint(strArray);
		
		String[] strngArray = Arrays.copyOfRange(stringArray, 2, 8);
		System.out.println("New Object Array with Vlaues:");
		arrayPrint(strngArray);
	}
	public static void arrayPrint(Object[] anObjectArray) {
		for (Object Number: anObjectArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Object Array after Copying:
Array Elelment = USA
Array Elelment = UK
Array Elelment = Japan
Array Elelment = China
New Object Array with Vlaues:
Array Elelment = UK
Array Elelment = Japan
Array Elelment = China
Array Elelment = Canada
Array Elelment = null
Array Elelment = null

将数组复制到用户指定的类型

在此 Java 程序 中,我们声明了 Java 对象。然后,我们调用 public static <T, U> T[] copyOfRange (U[] anObjectArray, int from, int to) 方法,将 Object 数组复制到一个新的指定数组。

package ArrayMethods;
import java.util.Arrays;

public class CopyOfRangeT {
	public static void main(String[] args) {
		Object[] objectArray = {"Kiwi", "Apple", "Bannana", "Grape", "Cherry"}; 
		String[] objArray = Arrays.copyOfRange(objectArray, 1, 4, String[].class);
		System.out.println("New Object Array after Copying:");
		arrayPrint(objArray);
	}
	public static void arrayPrint(Object[] anObjectArray) {
		for (Object Number: anObjectArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
New Object Array after Copying:
Array Elelment = Apple
Array Elelment = Bannana
Array Elelment = Grape