java--数组

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 不相等.");

}

}

}

 

posted on 2010-08-02 17:03  lovening  阅读(201)  评论(0编辑  收藏  举报