数组初始化赋值是指在数组,数组赋初值的基本形式

  数组初始化赋值是指在数组,数组赋初值的基本形式

  

目录

java数组初始化初始值方法1,方法2,方法3,数组互相赋值,使用用于回收对象的clone(),使用系统的静态方法arraycopy()

 

  

java数组初始化赋初值

 

  

方法一

int[]vis 1;//声明vis1=new int[100]未初始化;//为(int i=1=1定义占用空间大小(100int);I=5;I){ vis 1[I]=I;//为(int I=1;i100I){ system . out . print(vis 1[I] );//output,未赋值的是0 } system . out . println(vis 1 . length);//输出vis1数组的长度

 

  

方法二

int[] vis2={1,2,3,4,5 };for(int I=0;i5;I){ system . out . print(vis 2[I]);} system . out . println(vis 2 . length);

 

  

方法三

int[] vis3=new int[]{1,2,3,4,5,6 };system . out . println(vis 3 . length);

 

  00-1010本文讨论Java中数组的赋值。在讨论这个问题之前,我们首先要明白一件事。Java中的数组到底是什么?是一个类,一个对象,还是别的什么奇怪的东西。回答:Java中的数组本质上是对象。但是这个对象不是由类实例化的,而是由JVM创建的。不难解释,对于一个数组对象arr,我们可以通过arr.length直接访问数组的长度

  现在我们知道Java中的数组本质上是对象,让我们看看这样的代码是否合理:

  int[] a={1,2,3 };int[]b=new int[3];b=a;for(int I=0;i a .长度;I)a[I]=0;我们最初的想法是把数组A的值赋给B,然后清空数组A,但是我们会发现数组A和B都被清空了。

  由于数组本质上是对象,所以让我们分析一下这两个代码在Java内存模型中发生了什么。

  int[] a={1,2,3 };堆里会生成一个对应的对象,A会指向这个对象,然后int[]b=new int[3];B也会指向这个对象。例如,当我们修改一个[0]时,我们实际上修改了堆中的对象。数组B仍然指向这个堆中的对象,当然数组B的值也发生了变化。

  这里显而易见,所以其实不太合理。比较两个引用指向堆中的同一个对象,其中一个修改必然导致另一个的修改。

  那么数组的赋值究竟应该怎么做呢?

  

数组互相赋值方式

int[] a={1,2,3 };int[]b=new int[3];for(int I=0;ia .长度;I)b[I]=a[I];这样可以实现赋值操作,灵活性好,但是效率是个问题。

 

  00-1010既然数组本质上是一个对象,那么他就有了clone()方法。我们可以使用clone()方法来复制:

  int[] a={1,2,3 };int[]b=(int[])a . clone();//不要忘记强制类型转换

  

使用for循环

系统提供了一个静态方法arraycopy(),其原型如下:

 

  Public static void数组copy (object src,int src pos,object dest,int destpos,int length) src 3360源数组srcPos:要从dest:复制的源数组destPos:从length放置的目标数组:复制长度我们可以用它在数组之间复制3360

  int[] a={1,2,3 };int[]b=new int[3];System.arraycopy(a,0,b,0,3);这种方法高效灵活。许多基于数组实现的Java集合类在复制数组时使用这种方法。

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: