首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 數組基礎教程:聲明、初始化、多維數組與矩陣運算

     編輯:Java 相關知識

一維數組

聲明語法

type[] var;  // 推薦風格
type var[];  // C 風格

聲明時不可指定長度,需使用 new 創建對象:var = new type[length]

三種初始化方式

  1. 動態初始化:分步分配空間再賦值
    int[] a = new int[3];
    a[0]=0; a[1]=1; a[2]=2;
  2. 靜態初始化:聲明同時賦值
    int[] a = {0,1,2};
    Time[] times = {new Time(19,42,42), ...};
  3. 默認初始化:數組創建後元素自動按類型默認值初始化(int 為 0,引用類型為 null)

多維數組

Java 中多維數組本質是「數組的數組」,各維度長度可不一致。

二維數組聲明與初始化

// 靜態初始化
int[][] matrix = {{1,2},{3,4,5},{6,7,8,9}};
// 動態初始化:先分配行,再為每行分配列
String[][] str = new String[3][];
str[0] = new String[2];
str[1] = new String[3];
str[2] = new String[2];
for (int i=0; i

元素訪問與 length 屬性

  • arr.length 表示行數
  • arr[i].length 表示第 i 行的列數

實戰案例:矩陣乘法

public class MatrixMultiply {
    public static void main(String[] args) {
        int[][] a = new int[2][3];
        int[][] b = {{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
        int[][] c = new int[2][4];
        // 初始化 a
        for (int i=0; i<2; i++)
            for (int j=0; j<3; j++)
                a[i][j] = (i+1)*(j+2);
        // 矩陣相乘 c = a * b
        for (int i=0; i<2; i++) {
            for (int j=0; j<4; j++) {
                c[i][j] = 0;
                for (int k=0; k<3; k++)
                    c[i][j] += a[i][k] * b[k][j];
            }
        }
        // 輸出結果
        for (int i=0; i<2; i++) {
            for (int j=0; j<4; j++) System.out.print(c[i][j] + " ");
            System.out.println();
        }
    }
}

常見陷阱

  • 引用類型數組動態初始化時,需為每個元素單獨 new 對象
  • 越界訪問拋出 ArrayIndexOutOfBoundsException
  • 多維數組內存不連續,不可用 Arrays.copyOf 直接複製深層
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved