今天我們講個不一樣的概念――數組,數組也沒什么不好理解的,就是一組數。不過這組數有點特性。今天我們的任務就是,了解這個有特性的這組數。下面我們具體講一下它有哪些特性:
1、數組中的元素是同一類型。數組的長度在創建時確定,并且在創建后不變。解釋一下 聲明一個數組 int i[5]; 這就是int類型,名字叫i的數組。里面的數都必須是int類型。并且長度在創建時確定了是5。
2、在java語言中,數組就是一個對象,所以創建數組與創建對象一樣也是用new關鍵字來創建。舉個例子,s = new char[20]; p = new Point[50];
3、數組在被創建后,其元素被系統自動初始化了。字符元素被初始化為‘\u0000’,而對于對象數組都被初始化為null。 如果你不初始化的話,在內存是找不到它的位置的。
4、數組中的第一元素記做第0個,i[0]是數組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] = 0;
array2[2] = 2;
array2[4] = 4;
array2[6] = 6;
// 打印array1
System.out.print("array1 is ");
printArray(array1);
System.out.println();
// 第5步: 聲明一個整數類型的二維數組
int[][] matrix = new int[5][];
// 第6步: 將這個矩陣構成三角形
for ( int i = 0; i < matrix.length; i++ ) {
matrix[i] = new int[i];
for ( int j = 0; j < i; j++ ) {
matrix[i][j] = i * j;
}
}
// 第7步打印矩陣
for ( int i = 0; i < matrix.length; i++ ) {
System.out.print("matrix[" + i + "] is ");
printArray(matrix[i]);
System.out.println();
}
}
public static void printArray(int[] array) {
System.out.print('<');
for ( int i = 0; i < array.length; i++ ) {
// 打印一個元素
System.out.print(array[i]);
// 輸出最后一個元素的時候不輸出逗號
if ( (i + 1) < array.length ) {
System.out.print(", ");
}
}
System.out.print('>');
}
} 此源碼和其它例子打包下載
http://www.100jq.com/upload/2007_07/07070716584024.rar 在jdk5.0中,我們發現了一些更簡單的方法,打印一維數組時,用toString(array)方法,
打印二維數組時,用deepToString(array)方法。這樣的話就剩了我們又是循環又是判斷的。我們看個例子吧:實踐:
import java.util.Arrays;
public class ArraysTester {
private int[] ar;
public ArraysTester(int numValues) {
ar = new int[numValues];
for (int i=0; i < ar.length; i++) {
ar[i] = (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[30] = 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 不相等.");
}
}
}此源碼和其它例子打包下載
http://www.100jq.com/upload/2007_07/07070716584024.rar