Java数组赋值效率比较问题

1.for 循环逐一复制
2.System.arraycopy

3.Array.copyOf
4.使用clone方法以上四种方法效率比较:

  System.arraycopy > clone > System.copyOf > for循环
注解:arraycopy作为natvie(本地)方法,是最快的,下面该方法源码的描述。
public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length); 
Arrays.copyOf(Arrays类)的实现,在源码中是调用System.copyOf的,多了一个步骤。关于clone的源码定义如下;
protected native Object clone() throws CloneNotSupportedException;
关于clone网上好多帖子给出的是实验结果。一下帖子可能讲的更详细:http://xuyuanshuaaa.iteye.com/blog/1046621http://blog.csdn.net/stand1210/article/details/52686740(效率实验)http://blog.csdn.net/tingzhiyi/article/details/52344845

时间: 2024-08-05 19:44:47

Java数组赋值效率比较问题的相关文章

Java数组赋值

String [] word = {"hello", "world", "java"}; String [] dest = new String[3]; dest = words; words[0] = "nihao"; for(String t: dest){ System.out.println(t); } String [] dest2 = {"12","23","34&

java中将一个字符数组赋值给另一个,两者同时变化

java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才能那个让b不跟随a改变?如果b非变不可,我想记录下a没改变之前的值该怎么办?谢谢 如果需要b不变,就必须用for循环,使a数组的每个元素都复制到b的数组里.之所以b会随着a变化,那是因为他们指向了同一个对象.

Java - 数组解析

java提高篇(十八)-----数组之一:认识JAVA数组 一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样:数组是一个简单的复合数据类型,它是一系列有序数据的集合,它当中的每一个数据都具有相同的数据类型,我们通过数组名加上一个不会越界下标值来唯一确定数组中的元素. 还有更深的,那就是数组是一个特殊的对象!!(对于这个LZ理解的不是很好,对JVM

java数组对象的复制

一.首先,区分数组间的赋值 1 import java.util.Arrays; 2 public class Array { 3 public static void main(String[] args) 4 { 5 int[] array = new int[]{0, 1, 2, 3}; 6 int[] arr = array; //书组赋值 7 System.out.println(Arrays.toString(array)); //输出array 8 System.out.print

Java 数组,看这一篇就够了

在 Java 泛型出现之前,只有数组可以用来存储指定类型的对象:在自动装箱机制出现之前,只有数组可以用来存储基本数据类型:也就是说,在泛型和自动装箱机制出现之前,数组在 Java 当中的分量举足轻重. 况且数组还是一种效率最高的存储和随机访问对象序列的方式,但遗憾的是,数组的长度是固定的--举个例子,创建它的时候指定长度是 6,就只能存储 6 个元素,当你想放第 7 个元素时,是无法做到的. 随着计算机硬件能力的提升,开发人员在存储一组数据的时候更愿意使用 ArrayList 而不是数组.尽管

Java 数组学习笔记

数组的简单认识 简单理解java数组,就是可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变,这里的它们就是数组. 数组的特殊性 在java中有很多方式去持有对象,那么数组的与众不同点在哪里? 数组与其他种类的容器区别有三个方面:效率.类型和保存基本类型的能力. 在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式.数组就是一个简单的线性序列,这使得元素访问非常迅速.但是为之付出的代价就是数组对象的大小被固定,并且在其生命周期中不可改变. 在泛型之前,其他

JAVA数组的定义及用法

数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; 当中类型(type)能够为Java中随意的数据类型,包含简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量. 另外一种形式对C++开发人员可能认为非常奇怪,只是对JAVA或C#这种开发语言来说,另外一种形式可能更直观,由于这里定义的仅仅是个变量而已,系统

Java 数组工具类排序,最大值最小值等

public class ArrayUtils{ /** * 返回数组最大值 * * @param a * @return */ public static int max(int[] a){ // 返回数组最大值 int x; int aa[]=new int[a.length]; System.arraycopy(a,0,aa,0,a.length); x=aa[0]; for(int i=1;i<aa.length;i++){ if(aa[i]>x){ x=aa[i]; } } retu

Java数组的运用

Java数组 应用1: 大乐透彩票模拟器: 规则: 前区01-35中随机生成5个号码 后区01-12中随机生成2个号码 模拟操作,系统自动生成号码组合,并且按从小到大的顺序输出结果 同时要求可以选择生成多少组(默认选项:生成1组,生成5组,生成10组) 上图为方法一,数组的综合应用,赋值,冒泡排序,和通过循环遍历: 方法一: 常规的方法: 第一步:输出彩票前区的号码,用while循环,一个个随机数字输出,把一个数字赋值进数组第一个位置,因为要保证每一个数字的唯一性,所以之后的输出的数字要做出判断