JAVA学习笔记——数组

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

转载于:https://www.cnblogs.com/eddy-he/archive/2012/07/12/2587778.html