鍍金池/ 教程/ Java/ Java 數(shù)組
Java 接口
Java 方法
Java 數(shù)字
Java 條件判斷
Java 異常處理
Java 字符
Java 重寫
Java 網(wǎng)絡(luò)編程
Java 數(shù)據(jù)結(jié)構(gòu)
Java 的對象和類
Java 多線程
Java 封裝
Java 數(shù)組
Java Applet 基礎(chǔ)
Java 庫類
Java 抽象
Java 繼承
Java 正則表達式
Java 描述符的類型
Java 發(fā)送郵件
Java 序列化
Java 泛型
Java 多態(tài)
Java 變量類型
Java 基本數(shù)據(jù)類型
Java 包
Java 快速參考指南
Java 基本運算符
Java 概述
Java 字符串
Java 循環(huán)控制
Java 環(huán)境設(shè)置
Java 文件注釋
Java 文件和 I/O
Java 集合
Java 基本語法
Java 日期和時間

Java 數(shù)組

Java 提供了一個數(shù)據(jù)結(jié)構(gòu):數(shù)組,用于存儲相同類型的元素的一個固定大小的連續(xù)集合。數(shù)組是用于存儲數(shù)據(jù)的集合,但往往將數(shù)組認(rèn)為是相同類型的變量的集合。

跟聲明單個變量相反,如 number0, number1, ... number99, 聲明一個數(shù)組變量,如數(shù)字和使用 numbers[0], numbers[1] ..., numbers[99] 來表示各個變量。

此次教程將介紹如何使用索引變量聲明數(shù)組變量,創(chuàng)建數(shù)組,并處理數(shù)組。

聲明數(shù)組變量

要使用一個程序的數(shù)組,必須聲明一個變量來引用數(shù)組,必須指定數(shù)組的變量可以引用的類型。下面是來聲明一個數(shù)組變量的語法:

dataType[] arrayRefVar;   // preferred way.

or

dataType arrayRefVar[];  //  works but not preferred way.

風(fēng)格 dataType[] arrayRefVar 是首選的。風(fēng)格 dataType arrayRefVar[] 來自于 C/C++ 語言, 方便Java 繼承 C/C++ 的編程風(fēng)格。

示例

下面的代碼片段是這種語法的例子:

double[] myList;         // preferred way.

or

double myList[];         //  works but not preferred way.

創(chuàng)建數(shù)組

可以通過使用 new 運算符使用以下語法創(chuàng)建一個數(shù)組:

arrayRefVar = new dataType[arraySize];

上面的語句做了兩件事:

  • 它創(chuàng)建了一個使用 new dataType[arraySize] 的數(shù)組;
  • 它將新創(chuàng)建的數(shù)組引用分配給變量 arrayRefVar。

聲明數(shù)組變量,建立一個數(shù)組,并分配給變量數(shù)組引用可以在一個語句中組合使用,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

另外,可以創(chuàng)建數(shù)組,如下所示:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

數(shù)組元素通過索引訪問。數(shù)組的下標(biāo)是從0開始的,也就是說,它們從0開始到 arrayRefVar.length-1。

示例

下面的語句聲明一個數(shù)組變量 myList,創(chuàng)建 double 類型的10個元素的數(shù)組,并把它的引用分配到 myList :

double[] myList = new double[10];

以下圖片代表數(shù)組 myList。在這里,myList 有10個 double 值,索引是從0到9。

http://wiki.jikexueyuan.com/project/java/images/java_array.jpg" alt="image" />

處理數(shù)組

當(dāng)處理數(shù)組元素時,經(jīng)常使用的是 loop 循環(huán)或 foreach 循環(huán),因為一個數(shù)組中所有的元素是相同類型的并且數(shù)組的大小是已知的。

示例

下面是一個演示如何創(chuàng)建,初始化和處理數(shù)組的完整例子:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}

這將產(chǎn)生以下結(jié)果:

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

foreach 循環(huán)

JDK 1.5 引入了一個新的 for 循環(huán)被稱為 foreach 循環(huán)或增強的 for 循環(huán),它無需使用一個索引變量來完整的遍歷數(shù)組。

示例

下面的代碼顯示數(shù)組 myList 中的所有元素:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

這將產(chǎn)生以下結(jié)果:

1.9
2.9
3.4
3.5

將數(shù)組傳遞給方法

正如傳遞基本類型值的方法,也可以將數(shù)組傳遞給方法。例如,下面的方法顯示在一個 int 數(shù)組中的元素:

public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}

你可以通過傳遞數(shù)組調(diào)用它。例如,下面的語句調(diào)用方法 PrintArray 顯示3,1,2,6,4,2:

printArray(new int[]{3, 1, 2, 6, 4, 2});

從一個方法返回一個數(shù)組

一個方法也可以返回一個數(shù)組。例如,下面所示的方法返回一個數(shù)組,它是另一個數(shù)組的反轉(zhuǎn):

public static int[] reverse(int[] list) {
  int[] result = new int[list.length];

  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}

Arrays 類

java.util.Arrays 中的類包含各種靜態(tài)方法用于排序和搜索數(shù)組、數(shù)組的比較和填充數(shù)組元素。這些方法為所有基本類型所重載。

SN 方法和描述
1 public static int binarySearch (Object[] a, Object key)
使用二進制搜索算法搜索對象的指定數(shù)組(字節(jié),整數(shù),雙精度等)來指定值。該數(shù)組必須在進行此調(diào)用之前進行分類。如果它被包含在列表 (-(insertion point + 1), 將返回索引搜索關(guān)鍵字。
2 public static boolean equals (long[] a, long[] a2)
如果多頭的兩個指定數(shù)組彼此相等返回true。兩個數(shù)組認(rèn)為是相等判定方法:如果兩個數(shù)組包含相同的元素數(shù)目,并在兩個數(shù)組元素的所有相應(yīng)對相等。如果兩個數(shù)組相等,返回true。同樣的方法可以用于所有其它的原始數(shù)據(jù)類型 (Byte, short, Int, etc.)
3 public static void fill(int[] a, int val)
將指定的int值到指定的int型數(shù)組中的每個元素。同樣的方法可以用于所有其它的原始數(shù)據(jù)類型(Byte, short, Int etc.)
4 public static void sort(Object[] a)
將對象指定的數(shù)組升序排列,根據(jù)其元素的自然順序。同樣的方法可以用于所有其它的原始數(shù)據(jù)類型( Byte, short, Int, etc.)