前面介紹的數組容納的是一串數字,彷彿一根線把這組數字串了起來,故而它只是一維數組。一維數組用來表示簡單的數列尚可,要是表達複雜的平面座標系,那就力不從心了。因爲平面座標系存在水平和垂直兩個方向,所以可用二維數組來保存平面座標系上的一組座標頂點,其中第一維是頂點隊列,第二維是頂點的橫縱座標。許多個平面組合起來變成一幅動畫,每一個平面都構成動畫的一個幀,這樣就造成了三維數組。二維數組、三維數組,乃至更多維度的數組,統稱爲多維數組。多維數組全由一維數組擴展而來,它們的用法大同小異,於是只要學會如何使用二維數組,便可觸類旁通運用其餘多維數組。下面就以二維數組爲例,統一介紹多維數組的常見用法。
如同一維數組那樣,二維數組也有兩種聲明形式,一種是在變量名稱後面添加兩對方括號,例如「double triangle[][]」;另外一種是在類型後面添加兩對方括號,例如「int[][] triangle」。前述的二維數組triangle表示平面座標系上的三角形,其中第一對方括號表示這個三角形有幾個頂點,第二對方括號表示每一個頂點由幾個座標方向構成。
給二維數組分配存儲空間也有三種方式,分別說明以下:
一、利用語句「new 變量類型[頂點數量][方向數量]」分配空間,好比三角形triangle有三個頂點,每一個頂點由橫縱兩個座標方向組成,則可經過下面這行語句實現:java
// 在兩對方括號內分別填入數字,表示數組有多少行多少列 triangle = new double[3][2];
二、在分配存儲空間的時候當即對數組進行初始化賦值,此時方括號中間不填數字,而在方括號後面添加花括號,而且花括號內部是以逗號分隔的幾個一維數組。此時初始化賦值的代碼以下所示:數組
// 方括號內留空,而後緊跟花括號,花括號內部是以逗號分隔的幾個一維數組 double[][] triangle = new double[][]{ new double[]{-2.0, 0.0}, new double[]{0.0, -1.0}, new double[]{2.0, 1.0} };
三、可見上面的第二種寫法實在囉嗦,徹底能夠參照一維數組的簡化寫法,把多餘的「new double***」通通去掉,因而整個初始化代碼精簡以下:動畫
// 賦值等號右邊直接跟着花括號,花括號又內嵌好幾個花括號分別表示對應的一維數組 double[][] triangle = { {-2.0, 0.0}, {0.0, -1.0}, {2.0, 1.0} };
以上的賦值等號右邊直接跟着花括號,花括號裏面又有三組花括號,每組花括號分別容納兩個數字。這便告訴編譯器:該二維數組須要分配三個頂點,而且每一個頂點都有兩個座標方向。blog
若要獲取二維數組裏面的某個元素,可採起「數組名稱[元素行號][元素列號]」的形式,表示當前操做的是第幾行第幾列的數組元素。與一維數組不一樣的是,對於二維數組來講,「數組名稱.length」不能得到全部元素的數量,而是得到該數組的行數;要想獲取某行的列數,則需經過「triangle[行號].length」來獲得,把全部行的列數累加起來,才能求得該二維數組的元素個數。下面是聲明一個浮點型的二維數組,並對每一個數組元素賦值,最後遍歷打印各元素的完整代碼例子:隊列
// 如下是聲明二維數組的第一種形式:「變量類型 數組名稱[][]」 double triangle[][]; // 如下是分配二維數組空間的第一種形式 // 在兩對方括號內分別填入數字,表示數組有多少行多少列 triangle = new double[3][2]; // 數組名稱後面的「[數字1][數字2]」,就是數組元素的行列下標,表示當前操做的是第幾行第幾列的數組元素 triangle[0][0] = -2.0; triangle[0][1] = 0.0; triangle[1][0] = 0.0; triangle[1][1] = -1.0; triangle[2][0] = 2.0; triangle[2][1] = 1.0; // 下面經過循環語句依次讀出數組中的全部元素。 // 「二維數組名稱.length」表示獲取該數組的行數 for (int i=0; i<triangle.length; i++) { // 「triangle[i].length」表示獲取該數組第i行的列數 for (int j=0; j<triangle[i].length; j++) { // 打印第i行第j列的數組元素 System.out.println("triangle["+i+"]["+j+"]="+triangle[i][j]); } }
上述示例代碼中的二維數組,存放了平面座標系上的三個頂點,它們的座標分別是(-2.0, 0.0)、(0.0, -1.0)、(2.0, 1.0)。這三個座標點構成了一個三角形的三個頂點,正以下圖所示的A點(座標爲(-2,0))、B點(座標爲(0,-1))、C點(座標爲(2,1))。編譯器
看到了熟悉的平面座標圖,這下平面幾何的知識可派上用場了,例如根據兩點的座標來計算兩點之間的距離。既然三角形有三個頂點A、B、C,接下來不妨計算它的三條邊長,包括AB、AC和BC三條邊的長度。因而分別求得兩個頂點在橫軸方向的距離,以及在縱軸方向的距離,而後利用勾股定理算出鏈接兩頂點的斜邊長度。如下即是由二維數組保存的座標數值求解三角形各邊長的演示代碼:編譯
// 下面經過循環語句依次計算三角形每條邊的長度 // 假設第一個數組元素表明點A,第二個數組元素表明點B,第三個數組元素表明點C, // 則本循環將依次求得AB、AC、BC這三條邊的長度 for (int i=0; i<triangle.length-1; i++) { for (int j=i+1; j<triangle.length; j++) { // 獲取兩個頂點在橫軸方向的距離 double xDistance = Math.abs(triangle[j][0] - triangle[i][0]); // 獲取兩個頂點在縱軸方向的距離 double yDistance = Math.abs(triangle[j][1] - triangle[i][1]); // 根據勾股定理計算鏈接兩頂點的斜邊長度 double distance = Math.sqrt(xDistance*xDistance + yDistance*yDistance); System.out.println("i="+i+",j="+j+",distance="+distance); } }
運行上述的演示代碼,打印出來的三角形邊長計算結果以下所示:class
i=0,j=1,distance=2.23606797749979 i=0,j=2,distance=4.123105625617661 i=1,j=2,distance=2.8284271247461903