Java心得--数组2

1.  foreach循环

     使用foreach循环遍历数组和集合元素时,无须获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,系统自动遍历数组和集合的每个元素。

µ   格式:
for(类型  变量名 : 数组名 | 集合名){
      //变量自动迭代访问每个元素...
}

µ   注意:若数组中有n个元素,则该循环就循环n次;每一次循环都将数组中的一个元素赋给变量,循环体就对该变量进行操作。

例如:

String[] names ={"Georgianna","Jen","Simon"};

for (String name : names){

   System.out.println(name);

}

注意:

ü        使用foreach循环遍历数组元素无须获得数组长度,也无须根据索引来访问数组元素。

ü        无须循环条件,无须循环迭代语句,这些部分都由系统来完成。自动迭代数组的每个元素,当每个元素被迭代一次后,foreach循环自动结束。

ü        当使用foreach循环时,通常不要对循环变量进行赋值,虽然没有语法错,但极容易引起错误。

ü         当使用foreach来迭代访问数组元素时,循环变量相当于临时变量,系统会把数组元素依次赋给这个临时变量,但它并不是数组元素改变循环变量的值,并不能改变元素的值。因此,如果希望改变数组元素的值,则不能使用这种foreach循环。

2.  多维数组可以理解为由若干低维数组组成的数组,例如,多个一维数组可以组合而成为“二维数组”,多个二维数组组成三维数组…

   要访问二维数组中的某个元素,需要知道该元素的位置(第几行、第几列)

3. 二维数组的声明

格式:类型名 变量名[][];   或   类型名[][]  变量名;

例如,int[][] s;           Student s[][]; 

 (第一个角标(即第一个[])代表行,第二个代表列。)

   需注意:声明了数组类型变量,运行时系统只为引用变量分配引用空间,并没有创建对象,也不会为数组元素分配空间,因此尚不能使用任何数组元素。(与一维数组一样)

4.  二维数组对象的创建和初始化

µ     静态初始化
     格式:类型[][]  数组名={{第0行初值},…,{第n-1行初值}};
     例如,int[][]s={{67,89,53},{77,98,68},{57,66,73},{80,88,94},{84,92,90}};

µ   动态初始化

ü     (第一种)直接为每一维分配空间
例如,int [][] s=new int[5][3];

ü     (第二种)从最高维(即行数)开始(必须从最高维开始),分别为每一维分配空间。(只指定行的个数,不指定列的个数)

例如,int[][] s=new int[3][];
s[0]=new int[3];  

s[1]=new int[3];

s[2]=new int[3];

不能这么写:

s[0]={1,2,3};

s[1]={1,2,3};

s[2]={1,2,3};

但可以这么写:

S[0]=new int[3];

s[0][0]=1;

s[0] [1]=2;

s[0] [2]=3;

也可以这么写:

s[0]=new int[]{1,2,3};

s[1]= new int[]{1,2,3};

s[2]= new int[]{1,2,3};

5.  注意: Java中允许二维数组中每行的元素个数不同,即每行的列数可以不同。

例如静态初始化:int[][]={{1,2},{1,2,3},{1,2,3,4}}

例如动态初始化:int[][] s=new int[3][];

s[0]=new int[1];     s[1]=new int[2];     s[2]=new int[3];

6.  注意:使用二维数组s的length属性可获得二维数组高维(即行数)的大小;使用s[i].length属性可获得二维数组每一行的列数,即每一行的元素个数。

 for(int i=0;i<s.length;i++){

           for(int j=0;j<s[i].length;j++)

                  sum+=s[i][j];

  }

6.  在JDK的java.util包中定义的Arrays类提供了多种数组操作方法,实现了对数组元素的排序、填充、转换、增强检索和深度比较等功能,所有的这些方法都是static的。

¯      数组元素的排序方法
     原型:public static void sort(<type>[] a);
      例如,int[]a={4,12,0,-5,45,-56};
                 Arrays.sort(a);

     例6.7 数组的排序。

   注意:数组元素的排序通常指一维数值型数组元素按升序排序,偶尔也会涉及一维String数组的排序,多维和其他引用类型的数组排序实用意义不大。

 

posted @ 2012-04-19 08:39  yangkai_keven  阅读(169)  评论(0)    收藏  举报