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 的第一个元素。
实例1:
- 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)方法。
实例2:
- 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 相等.");
- } else {
- System.out.println("Boards 1 和 3 不相等.");
- }
- }
- }
阅读(881) | 评论(0) | 转发(0) |