java 數組(翻譯自Java Tutorials)

來源:互聯網
上載者:User

原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/17/2821925.html

英文出自 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

數組

數組是一個對象容器,持有固定數目,同一類型的值。當數組建立時,數組的長度就建立了。建立後,它的長度就是固定的。你已經看過了數組的例子,main方法的 "Hello World!"程式。這個章節討論數組的更多細節。

數組的每個成員,成為元素,每個元素通過數字索引訪問。如解,數字索引從0開始,第9個元素,通過索引8訪問。

下面的程式,ArrayDemo,建立整數數組,放一些值到裡面,然後把每個值輸出到標準輸出。

class ArrayDemo {    public static void main(String[] args) {        // declares an array of integers        int[] anArray;        // allocates memory for 10 integers        anArray = new int[10];                   // initialize first element        anArray[0] = 100;        // initialize second element        anArray[1] = 200;        // etc.        anArray[2] = 300;        anArray[3] = 400;        anArray[4] = 500;        anArray[5] = 600;        anArray[6] = 700;        anArray[7] = 800;        anArray[8] = 900;        anArray[9] = 1000;        System.out.println("Element at index 0: "                           + anArray[0]);        System.out.println("Element at index 1: "                           + anArray[1]);        System.out.println("Element at index 2: "                           + anArray[2]);        System.out.println("Element at index 3: "                           + anArray[3]);        System.out.println("Element at index 4: "                           + anArray[4]);        System.out.println("Element at index 5: "                           + anArray[5]);        System.out.println("Element at index 6: "                           + anArray[6]);        System.out.println("Element at index 7: "                           + anArray[7]);        System.out.println("Element at index 8: "                           + anArray[8]);        System.out.println("Element at index 9: "                           + anArray[9]);    }} 

程式輸出是

Element at index 0: 100Element at index 1: 200Element at index 2: 300Element at index 3: 400Element at index 4: 500Element at index 5: 600Element at index 6: 700Element at index 7: 800Element at index 8: 900Element at index 9: 1000

在真實世界方案中,最大的可能是使用一個迴圈構,遍曆數組中的每個元素,而不是像上面每行寫一行代碼。但是,例子清晰解說了數組的文法。

 

聲明陣列變數

上面的程式,使用下面的代碼聲明anArray:

// declares an array of integersint[] anArray;

就像聲明其他類型的變數,數組聲明有兩部分:數組的類型和數組的名字。一個數組的類型寫為type[],type是數組包含的元素的資料類型;方括弧中的特殊符號,表明這個變數包含數組。數組的大小,不是它類型的一部分(所以方括弧是空的)。數組的名字遵循命令規範的規則和慣例。和變數的其他類型一樣,聲明實際上不建立數組—它簡單告訴編譯器,該變數將持有該類型的數組。

類似,可以聲明其他類型的數組:

byte[] anArrayOfBytes;short[] anArrayOfShorts;long[] anArrayOfLongs;float[] anArrayOfFloats;double[] anArrayOfDoubles;boolean[] anArrayOfBooleans;char[] anArrayOfChars;String[] anArrayOfStrings;

也可以把中括弧放在數組名字的後面:

// this form is discouragedfloat anArrayOfFloats[];

但是,按照慣例不推薦這個形式;中括弧內確定數群組類型,應該會出現指定的類型。

 

建立,初始化,訪問數組

有一個方法建立數組是用new操作符。ArrayDemo程式分配一個10個元素的數組,並賦值數組的引用給anArray變數。

// create an array of integersanArray = new int[10];

如果聲明缺失,編譯器會報錯,錯誤資訊類似下面:

ArrayDemo.java:4: Variable anArray may not have been initialized.

下面幾行給數組的每個元素賦值:

anArray[0] = 100; // initialize first elementanArray[1] = 200; // initialize second elementanArray[2] = 300; // etc.

每個數組元素通過數字索引訪問:

System.out.println("Element 1 at index 0: " + anArray[0]);System.out.println("Element 2 at index 1: " + anArray[1]);System.out.println("Element 3 at index 2: " + anArray[2]);

可以使用速記文法建立和初始化數組:

int[] anArray = {     100, 200, 300,    400, 500, 600,     700, 800, 900, 1000};

數組的長度,由{和}之間的值的長度決定。

 

使用兩個或兩個以上的中括弧,可以聲明數組的數組(多維陣列)。例如String[][] names.每個元素,必須通過相關的數字索引訪問。

java程式設計語言,多維陣列簡單看來就是元素是數組的數組。這不像C或者Fortran,這樣做的後果是,該行被允許在長度的不同而有所差異。如MultiDimArrayDemo程式所示:

class MultiDimArrayDemo {    public static void main(String[] args) {        String[][] names = {            {"Mr. ", "Mrs. ", "Ms. "},            {"Smith", "Jones"}        };        // Mr. Smith        System.out.println(names[0][0] + names[1][0]);        // Ms. Jones        System.out.println(names[0][2] + names[1][1]);    }}

程式輸出如下:

Mr. SmithMs. Jones

最後,使用內建的length屬性顯示任何數組的長度,代碼

 System.out.println(anArray.length);

將輸出數組的長度到標準輸出。

 

數組拷貝

System類有一個arraycopy方法,可以有效把資料從一個數組拷貝到另一個數組:

public static void arraycopy(Object src, int srcPos,                             Object dest, int destPos, int length)

兩個Object參數指定源數組src和目標數組dest。剩下的三個int參數指明源數組的開始位置,目標數組的開始位置,要拷貝的數組的元素個數。

接下來的程式,ArrayCopyDemo,聲明一個char數組,拼字"decaffeinated",使用arraycopy拷貝第一個數組的字串到第二個數組:

class ArrayCopyDemo {    public static void main(String[] args) {        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',                'i', 'n', 'a', 't', 'e', 'd' };        char[] copyTo = new char[7];        System.arraycopy(copyFrom, 2, copyTo, 0, 7);        System.out.println(new String(copyTo));    }}

程式輸出如下:

caffein
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.