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( ' > ' );
}
}
在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 不相等. " );
}
}
}