黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: 高薇    时间: 2012-7-29 16:45
标题: 数组问题
在这里int[] array=new int[3];用这种格式定义数组时,
      int[] array={1,3,4};
                 array={1,3,4};
这两种都不能正确赋值;
想问一下,这样定义时,除了给每个实体挨个赋值之外,有没有其它的赋值方式?Thank You!
作者: 朱烈葵    时间: 2012-7-29 16:56
不知道,好像赋值只有这两种
作者: 纪艺松    时间: 2012-7-29 17:08
数组的初始化分为定义时初始化和定以后初始化,定义时初始化就是int[] arr={};而定以后初始化我想就是循环了,楼主的初始化应该属于定以后,我想只能用循环语句了;
作者: 赵方明    时间: 2012-7-29 17:15
int[] array=new int[3]//这一句你建立了一个int []型数组,数组名为array,数组长度为3,没有初始化。
      int[] array={1,3,4};//这一句你建立了一个新的int []型数组,数组名为array,并初始化。你不是在给上一个数组赋值。
                 array={1,3,4};//没有这个用法

给数组赋值有两种方法。
一是定义时就初始化。
int[] array={1,3,4};
二是先定义,并给定长度,然后赋值。
int[] array=new int[3];
arr[0]=1;
arr[1]=3;
arr[2]=4;

作者: 郑正华    时间: 2012-7-29 17:22
本帖最后由 郑正华 于 2012-7-29 17:42 编辑

数组赋值一般有两种吧,一种是静态初始化数组,就是创建数组时就给数组赋值了;这种方式一般是数据明确的情况下使用。
比如:int[] arr = new int[]{2,4,5,7,8}; 它的简写格式是:int[] arr = {2,4,5,7,8};
还有一种是数组中的数据不明确的情况下,你可以先定义出数组的长度:
比如:int[] arr = new int[5];
然后根据需求依次给数组依次赋值,比如:arr[0] =4; arr[1] = 7;........
再者就是如果你的数组中的数据很有规律,可以用循环的方式给数组赋值,这都是根据程序的需求了。

延伸一下,比如你也可以通过不同渠道的数据采集来给你的数组赋值,这样有很多不同方式的赋值,比如你写了个程序,通过键盘录入给数组赋值,或者通过拷贝另一个数组的数据来给你的数组赋值,或者通过某种条件从其他地方塞选出数据然后赋值给你的数组,就是说你数组的赋值渠道(方式)有很多种,但这些情况的前提就是你的数组数据不明确!
作者: 杨志    时间: 2012-7-29 17:23
这数组的初始化问题!
数组的初始化分为两种!
即为:静态初始化和动态初始化!
简而言之,静态初始化就是,由程序员去指定显式(注意是显式)指定每个元素的值,系统自动判定数组长度。
如下:
  1. int[] array = {1,2,3};
复制代码
动态初始化,则只需要指定长度,系统为元素自动分配初始值!
  1. int[] array=new int[3];
复制代码
这样就是动态初始化。
那么这里就有些问题需要注意!
1 不管是那种初始化方法,一旦初始化完成,数组长度不可改变。
2 对于动态初始化方式,不同的数据类型,初始化的值则是不一样的。
如是int类型,那么初始化的值则为 0,如果是引用数据类型如String,或者数组 ,那么就是null.
在某些时候数组是不一定需要初始化的。
如下:

  1. int[] array = {1,2,3};       
  2. int[] arr;
  3. arr = array;
  4. for(int i = 0 ; i < arr.length ; i ++){
  5.         System.out.println("arr["+i+"] = " + arr[i]);
  6. }
复制代码
试问这里的arr数组初始化了么?
以上是本人对数组的一些理解!希望能够帮到你!
作者: 杨志    时间: 2012-7-29 17:33
杨志 发表于 2012-7-29 17:23
这数组的初始化问题!
数组的初始化分为两种!
即为:静态初始化和动态初始化!

哈哈!对你有帮助就好了!
作者: 贾飞雨    时间: 2012-7-29 17:36
int[] array={1,3,4};是在定义数组的时候初始化了,这种方法是可以的。int[] array=new int[3];这个是定义了一个数组但没哟初始化,然后可以通过array[0]=1;array[1]=3;array[2]=4;进行赋值。

作者: 杨志    时间: 2012-7-29 18:45
yufeiant 发表于 2012-7-29 17:36
int[] array={1,3,4};是在定义数组的时候初始化了,这种方法是可以的。int[] array=new int[3];这个是定义 ...
  1. int[] array=new int[3];
复制代码
这句话其实已经初始化了!每个元素的值都是0;
不信可以测试一下!不去赋值而直接输出!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2