bibibobo 发表于 2009-1-5 08:59:44

java初学者实践教程9-数组

今天我们讲个不一样的概念――数组,数组也没什么不好理解的,就是一组数。不过这组数有点特性。今天我们的任务就是,了解这个有特性的这组数。下面我们具体讲一下它有哪些特性:
1、数组中的元素是同一类型。数组的长度在创建时确定,并且在创建后不变。解释一下 声明一个数组 int i; 这就是int类型,名字叫i的数组。里面的数都必须是int类型。并且长度在创建时确定了是5。
   2、在java语言中,数组就是一个对象,所以创建数组与创建对象一样也是用new关键字来创建。举个例子,s = new char; p = new Point;   
   3、数组在被创建后,其元素被系统自动初始化了。字符元素被初始化为‘\u0000’,而对于对象数组都被初始化为null。 如果你不初始化的话,在内存是找不到它的位置的。
   4、数组中的第一元素记做第0个,i是数组i 的第一个元素。
   说了这么些,我们还是得练练啊
实践:





public class TestArrays {
public static void main(String[] args) {
    // 第1,2步: 声明并初始化数组变量
    int[]array1 = { 2, 3, 5, 7, 11, 13, 17, 19 };
    int[]array2;
   
    // 第3步: 显示数组初始化值
    System.out.print("array1 is ");
    printArray(array1);
    System.out.println();
    // 第4步: array2引用array1
    array2 = array1;
    // 更改array2
    array2 = 0;
    array2 = 2;
    array2 = 4;
    array2 = 6;
    // 打印array1
    System.out.print("array1 is ");
    printArray(array1);
    System.out.println();
    // 第5步: 声明一个整数类型的二维数组
    int[][] matrix = new int[];
    // 第6步: 将这个矩阵构成三角形
    for ( int i = 0; i < matrix.length; i   ) {
      matrix = new int;
      for ( int j = 0; j < i; j   ) {
       matrix = i * j;
      }
    }
    // 第7步打印矩阵
    for ( int i = 0; i < matrix.length; i   ) {
      System.out.print("matrix["   i   "] is ");
      printArray(matrix);
      System.out.println();
    }
}
public static void printArray(int[] array) {
    System.out.print('<');
    for ( int i = 0; i < array.length; i   ) {
      // 打印一个元素
      System.out.print(array);
      // 输出最后一个元素的时候不输出逗号
      if ( (i   1) < array.length ) {
       System.out.print(", ");
      }
    }
    System.out.print('>');
}
}      
   
    在jdk5.0中,我们发现了一些更简单的方法,打印一维数组时,用toString(array)方法,
打印二维数组时,用deepToString(array)方法。这样的话就剩了我们又是循环又是判断的。我们看个例子吧:
实践:





import java.util.Arrays;
public class ArraysTester {
private int[] ar;
   
public ArraysTester(int numValues) {
    ar = new int;
    for (int i=0; i < ar.length; i) {
      ar = (1000 - (300   i));
    }
}
public int[] get() {
    return ar;
}
public static void main(String[] args) {
    ArraysTester tester = new ArraysTester(50);
    int[] myArray = tester.get();
    // 比较两个数组
    int[] myOtherArray = tester.get().clone();
    if (Arrays.equals(myArray, myOtherArray)) {
      System.out.println("这两个数组是相等的!");
    } else {
      System.out.println("这两个数组是不相等的!");
    }
    // 填上一些值
    Arrays.fill(myOtherArray, 2, 10, new Double(Math.PI).intValue());
    myArray = 98;
    // 打印数组
    System.out.println("这是一个未排序的数组...");
    System.out.println(Arrays.toString(myArray));
    System.out.println();
    // 数组排序
    Arrays.sort(myArray);      
    // 打印被排序的数组 用toString()
    System.out.println("这是一个被排序的数组...");
    System.out.println(Arrays.toString(myArray));
    System.out.println();
   
    // 得到特殊值的索引
    int index = Arrays.binarySearch(myArray, 98);
    System.out.println("98 被定位在第 "   index   "个位置上");
   
    String[][] ticTacToe = { {"X", "O", "O"},
                           {"O", "X", "X"},   
                           {"X", "O", "X"}};
    //打印二维数组用deepToString()
    System.out.println(Arrays.deepToString(ticTacToe));
    String[][] ticTacToe2 = { {"O", "O", "X"},
                              {"O", "X", "X"},   
                              {"X", "O", "X"}};
    String[][] ticTacToe3 = { {"X", "O", "O"},
                              {"O", "X", "X"},   
                              {"X", "O", "X"}};
    if (Arrays.deepEquals(ticTacToe, ticTacToe2)) {
      System.out.println("Boards 1 和 2 相等.");
    } else {
      System.out.println("Boards 1 和 2 不相等.");
    }
    if (Arrays.deepEquals(ticTacToe, ticTacToe3)) {
      System.out.println("Boards 1 和 3 are 相等.");
    } else {
      System.out.println("Boards 1 和 3 are 不相等.");
    }
}
}   
此源码和其它例子打包下载
java初学者实践教程10-集合类
查看原文>>
页: [1]
查看完整版本: java初学者实践教程9-数组