05 - JavaSE之数组

一维数组

  • java中的数组是引用类型,分配在堆空间上。

  • 一维数组的声明方式:

    type var[];
    type[] var;
    
  • java中声明数组时不能指定其长度,如下,因为java中的数组是分配在堆空间的,需要new出来。

int[] a = new int[5];

动态初始化

  • 数组定义与为数组元素分配空间和赋值的操作分开进行。
int a[];
a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;

静态初始化

  • 在定义数组的时候就为数组元素分配空间并赋值。
int a[] = {1, 2, 3};
Date days[] = {
	new Date(1, 4, 2004);
	new Date(2, 4, 2004);
	new Date(3, 4, 2004);
}

数组元素的默认初始化

  • 数组是引用类型,他的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化了。
int a[] = new int[3];
Date days = new Date[3];
// 则a中元素值为0;days中的元素值为null

二维数组

  • java中多维数组的声明和初始化按照从多维到高维的顺序进行。
// 例如
int a[][] = new int [3][];
a[0] = new int[3];
a[1] = new int[4];
a[2] = new int[5];
// int t[][] = new int[][3]; // 错误

二维数组初始化

  • 静态初始化
int A[][] = {{1,2}, {3,4}, {5,6,7}};
// 错误 int B[3][2] = {{1,2}, {3,4}, {5,6}}; 
// 错误 int B[][2] = {{1,2}, {3,4}, {5,6}}; 
// 错误 int B[3][] = {{1,2}, {3,4}, {5,6}}; 
  • 动态初始化
int a[][] = new int[2][3];
// 或者

int b[][] = new int[2][];
b[0] = new int[3];
b[1] = new int[4];

数组的拷贝

  • 使用 java.lang.System 类的静态方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
  • 可以用于数组 src 从第 srcPos 项元素开始的 length 个元素拷贝到目标数组dest 的从 destPos 项开始的 length 个位置。

  • 如果源数据数目超过目标数组边界会抛出 IndexOutOfBoundsException 异常。

public class TestArrayCopy {
  public static void main(String args[]) {
    String[] s = 
            {"Mircosoft","IBM","Sun","Oracle","Apple"};
    String[] sBak = new String[6];
    System.arraycopy(s,0,sBak,0,s.length);
    
    for(int i=0;i<sBak.length;i++){
      System.out.print(sBak[i]+" ");
    }
    
    System.out.println();
    int[][] intArray = {{1,2},{1,2,3},{3,4}};
    int[][] intArrayBak = new int[3][];
    System.arraycopy
            (intArray,0,intArrayBak,0,intArray.length);
    intArrayBak[2][1] = 100;
    
    for(int i = 0;i<intArray.length;i++){
        for(int j =0;j<intArray[i].length;j++){
            System.out.print(intArray[i][j]+"  "); 
        }
        System.out.println();
    }
  }
}
posted @ 2018-01-07 16:52  Daotin  阅读(127)  评论(0编辑  收藏  举报