JAVA学习笔记——数组

时间:2023-02-25 11:33:33

JAVA学习笔记——数组

 

软件版本:

  java version "1.7.0_05"
  eclipse

目录:

  1. 声明数组
  2. 实例化数组
  3. 初始化数组
  4. 二维数组
  5. length 属性
  6. foreach 循环

  7. 参考资料

 1. 声明数组

  JAVA 支持两种格式声明数组:

  type[] ArrayName;
  type ArrayName[];  // 不推存这样子写

  要注意的是,声明后的数组还不能使用。它只声明变量 ArrayName 为 type 类型的数组,并没有指向任何有效内存空间(相当于指针),所以不能使用。在定义的过程中,也不可以在方括号内指定数组的长度。

  数组的长度是在数组实例化或者数组初始化的过程中确定下来的,只有被实例化或者初始化后的数组才能够使用。

2. 实例化数组

  所谓的实例化,其实就是为数组在堆中分配内存空间。格式为:

  1)
  type[] ArrayName;            // 声明数组
  ArrayName = new type[length];      // 实例化数组,为数组分配内存

  2)
  type[] ArrayName = new type[length];  // 声明并实例化数组

3. 初始化数组

  初始化数组其实不但将数组实例化,而且还赋予了数组初始值。格式为:

  1)
  type[] ArrayName;                      // 声明数组
  ArrayName = new type[]{element1, element2, element3,...};  // 初始话数组

  2)
  type[] ArrayName = {element1, element2, element3,...};    // 定义并初始化数组·········(1)

  要注意的是,下面这样子初始化是不行的。

  type[] ArrayName;                 // 定义(声明)数组
  ArrayName = {element1, element2, element3,...};  // 注意与(1)的区别

  既指定长度,又进行赋值,也是不行的:

  1)
  type[] ArrayName;                          // 声明数组
  ArrayName = new type[length]{element1, element2, element3, ...};  // 初始话数组

  2)
  type[] ArrayName = new type[length]{element1, element2, element3, ...};    // 定义并初始化数组

 4. 二维数组

  可以这样子理解二维数组,就是建立一个数组用来存储多个不同长度的一维数组。对于 n 维数组可以理解为,建立一个数组,储存多个不同长度的 n-1 维数组。二维数组的声明方法:

  type[][] ArrayName;
  type ArrayName[][];  // 还是不推荐这样子写
  type[] ArrayName[];  // 这么怪的写法也支持

  实例化:

  1)
  type[][] ArrayName = new type[length1][length2];  // 声明并实例化
  2)
  type[][] ArrayName = new type[length1][];  // 只实例化第一级数组是可以的,但是不能只实例化第二级数组
  ArrayName[num1] = new type[length2];  // 实例化第二级数组
  ArrayName[num2] = new type[length3];  // 他们的长度可以不一样

  初始化:

  type[][] ArrayName = new type[][]{{elements1...}, {elements2...}, {elements2...}, ...};
  type[][] ArrayName = {{elements1...}, {elements2...}, {elements2...}, ...};  // 也可以这样子

  就这样子看起来有点复杂,弄个例子容易明白点。

int[][] numbers = new int[][]{{2, 3}, {5, 10}, {20, 30}};
String[][] str = new String[][]{new String[3], new String[]{"hello"}};

 5. length 属性

  在 JAVA 中所有的数组都提供一个 length 属性,表示数组的长度。我们可以通过它来遍历整个数组。

for(int i = 0; i < ArrayName.length; i++)
{
  System.out.println(ArrayName[i]);
}

  你猜一下,如果 ArrayName 是一个二维数组将会怎么样?将会输出第一级数组的长度。

6. foreach 循环

  foreach 循环,用来循环遍历数组和集合会更加简洁。格式:

  for(type variableName : ArrayName | collection)
  {
    // 每一次循环 variableName 都将获取 ArrayName 中的一个元素,直到最后一个跳出循环。
  }

  例子:

 1 public class test {
 2     public static void main(String[] args) {
 3 
 4         int[][] numbers = new int[][]{{2, 3}, {20, 30, 40}, {200, 300}, {2000, 3000}};
 5         
 6         for(int i[] : numbers)
 7         {
 8             for(int j : i)
 9             {
10                 System.out.println(j);
11             }
12         }
13     }
14 }

  由于 numbers 是一个二维数组,所以第 6 行的 i 是一个一维数组。这样子 i 才能指向每一个 nembers 的第一级数组。

7. 参考资料

[1]. 《疯狂JAVA讲义》李刚
[2]. http://android.yaohuiji.com/archives/3379