JAVA语言的几种数组复制方法

for循环逐一复制:for循环的话,很灵活,但是代码不够简洁.
System.arraycopy:System.arraycopy()源码。可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。(最优的)
public static native void arraycopy(Object src,  int  srcPos,
           Object dest, int destPos,int length); 
System.copyof:copyOf不是System的方法,而是Arrays的方法,下面是源码,可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的

1

2

3

4

5

6

public static int[] copyOf(int[] original, int newLength) {

   int[] copy = new int[newLength];

   System.arraycopy(original, 0, copy, 0,

   Math.min(original.length, newLength));

   return copy;

}

使用clone方法:clone的话,返回的是Object【】,需要强制转换。 一般用clone效率是最差的
时间: 2024-10-14 20:10:50

JAVA语言的几种数组复制方法的相关文章

Java语言程序设计基础篇 数组(六)

Java语法之数组 数组的定义 数组是对象. 如:int [ ]  x = new int[100];或 :int x [ ]  = new int[100];(这种方式主要是为了适应C/C++程序员) 声明一个数组变量:int [ ] x;并不会在内存中给数组分配任何空间,仅创建一个引用数组的存储地址. 数组创建后,其元素赋予默认值,数值型基本数据类型默认值为0,char类型为'\u0000',boolean类型为false. 数组的静态初始化 如:int [ ] x = new int [

javascript 三种数组复制方法的性能对比

javascript 三种数组复制方法的性能对比,对于webkit, 使用concat; 其他浏览器, 使用slice. 一. 三种数组复制方法 1. by slice var arr = [1, 2, 3], copyArr; copyArr = arr.slice(); 2. by concat var arr = [1, 2, 3], copyArr; copyArr = arr.concat(); 3. by loop var arr = [1, 2, 3], copyArr = [];

Java语言中有4种访问修饰符

转载:http://wuhaidong.iteye.com/blog/851754 在Java语言中有4中访问修饰符:package(默认).private.public和protected. 1.package是默认的保护模式,又加做包访问,没有任何修饰符时就采用这种保护模式.包访问允许域和方法被同一个包内任何类的任何方法访问.(包内访问). 2.private标识得访问模式,表示私有的域和方法只能被同一个类中的其他方法访问,实现了数据隐藏:必要时,可以通过方法访问私有变量.(类内访问). 3

[java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

浅析Java语言中两种异常的差别

Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的. 它们的不同之处表现在两方面:机制上和逻辑上. 一.机制上  它们在机制上的不同表现在两点:1.如何定义方法;2. 如何处理抛出的异常.请看下面CheckedEx

Java语言中两种异常的差别

Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的. 它们的不同之处表现在两方面:机制上和逻辑上. 一.机制上 它们在机制上的不同表现在两点:1.如何定义方法;2. 如何处理抛出的异常.请看下面CheckedExc

翁恺老师零基础学JAVA语言第五周数组--投票程序例题-个人理解

// 输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束 // 需要一个int[10]的数组来录入每次输入的数字;需要一个n表示每次输入的数字 // num[] = {0,1,2,3,4,5,6,7,8,9},刚好对应0-9这10个数字 Scanner in = new Scanner(System.in); int[] num = new int[10]; int n = in.nextInt(); if(n >= 0 && n <= 9) {

零基础学JAVA语言第五周数组--求平均数例题

package shuzu; import java.util.Scanner; public class Shuzu_pjs { public static void main(String[] args) { // 用户输入一系列数字,然后求出这些数字的平均数,并输出输入数字中大于平均数的数 Scanner in = new Scanner(System.in); System.out.println("你打算输入多少个数值?请输入:"); // 计算平均数,需要有:1.记录输入的

翁恺老师零基础学JAVA语言第五周数组--求平均数例题-个人理解

// 用户输入一系列数字,然后求出这些数字的平均数,并输出输入数字中大于平均数的数 Scanner in = new Scanner(System.in); System.out.println("你打算输入多少个数值?请输入:"); // 计算平均数,需要有:1.记录输入的每个数n:输入数的和sum:输入数值的个数cnt: int cnt = in.nextInt(); // 算平均数,定义sum为浮点数 double sum = 0; System.out.println(&quo