Java 數組創(chuàng)建與使用詳解
一、什么是數組
數組(Array)是 Java 中最基本的數據結構之一。
它用于在內存中存儲一組相同類型的元素,并可以通過索引(index)快速訪問。
無論是學生成績表、商品價格列表,還是二維矩陣計算,數組都是不可或缺的基礎知識。
在 Java 中,數組是一種容器對象,用于存儲 固定數量 的同類型值。
數組的長度一旦定義,就 不能改變。
特點:
- 數組中的元素類型 相同;
- 數組的 長度固定;
- 通過 索引(從 0 開始) 訪問;
- 數組本質上是一個 對象(在堆內存中創(chuàng)建)。
二、數組的聲明與創(chuàng)建
數組的聲明和創(chuàng)建分為兩步:
聲明數組
int[] numbers; // 推薦寫法 // 或 int numbers[]; // 兼容寫法(不推薦)
這里僅聲明了變量 numbers,并未真正分配內存。
創(chuàng)建數組對象
使用 new 關鍵字分配內存:
numbers = new int[5]; // 創(chuàng)建一個長度為5的int數組
現在數組的每個元素都有默認值。
聲明和創(chuàng)建可合并為一行
int[] numbers = new int[5];
內存模型理解
當你執(zhí)行:
int[] arr = new int[3];
內存中會發(fā)生以下事情:
| 區(qū)域 | 內容 |
|---|---|
| 棧內存 | 保存變量 arr(引用地址) |
| 堆內存 | 存放數組對象 [0, 0, 0] |
Java 數組是 引用類型,實際數據存儲在堆中。
Java 數組是對象,所有數組都在堆中創(chuàng)建,棧中僅存引用。
三、數組初始化方式
Java 提供了三種常見的初始化方式:
默認初始化
當數組被 new 創(chuàng)建時,系統會自動為元素賦默認值。
int[] nums = new int[3]; System.out.println(nums[0]); // 輸出 0
| 數據類型 | 默認值 |
|---|---|
| byte / short / int / long | 0 |
| float / double | 0.0 |
| char | ‘\u0000’ |
| boolean | false |
| 引用類型 | null |
靜態(tài)初始化(直接賦值)
直接在定義時指定初始值:
int[] scores = {90, 85, 100, 70};
String[] names = {"Alice", "Bob", "Charlie"};
編譯器會自動推斷數組長度。
? 語法糖寫法,最常用!
動態(tài)初始化(先創(chuàng)建后賦值)
int[] ages = new int[3]; ages[0] = 18; ages[1] = 20; ages[2] = 22;
適合需要運行時賦值的場景。
四、訪問數組元素
數組索引從 0 開始,到 length-1 結束:
int[] arr = {10, 20, 30};
System.out.println(arr[0]); // 輸出 10
System.out.println(arr[2]); // 輸出 30
?? 注意數組越界(ArrayIndexOutOfBoundsException)
int[] arr = new int[3]; arr[3] = 100; // ? 錯誤:最大索引是 2
五、數組的長度屬性
每個數組都有一個內置屬性 .length:
int[] data = {1, 2, 3, 4};
System.out.println(data.length); // 輸出 4
注意:
length是 屬性,不是方法(沒有括號?。?/p>
六、遍歷數組的方式
1. 傳統 for 循環(huán)
int[] nums = {10, 20, 30, 40};
for (int i = 0; i < nums.length; i++) {
System.out.println("索引 " + i + " 的值是 " + nums[i]);
}
2. 增強型 for 循環(huán)(for-each)
for (int num : nums) {
System.out.println(num);
}
for-each 循環(huán)更簡潔,但無法訪問索引值。
七、二維數組(多維數組)
Java 支持多維數組,最常用的是 二維數組。
聲明與創(chuàng)建
int[][] matrix = new int[2][3]; // 2行3列
結構示意:
| 索引 | 元素內容 |
|---|---|
| [0][0] ~ [0][2] | 第一行 |
| [1][0] ~ [1][2] | 第二行 |
靜態(tài)初始化
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};
訪問方式:
System.out.println(matrix[0][2]); // 輸出 3
遍歷二維數組
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
輸出:
1 2 3 4 5 6
八、不規(guī)則數組(Jagged Array)
Java 支持“鋸齒狀”二維數組——每一行可以長度不同:
int[][] jagged = new int[3][]; jagged[0] = new int[2]; jagged[1] = new int[4]; jagged[2] = new int[1];
九、數組的常見操作示例
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
int[] nums = {5, 2, 9, 1};
Arrays.sort(nums); // 排序
System.out.println(Arrays.toString(nums)); // 輸出 [1, 2, 5, 9]
int index = Arrays.binarySearch(nums, 5); // 二分查找
System.out.println("5 的索引是:" + index);
int[] copy = Arrays.copyOf(nums, nums.length); // 復制數組
System.out.println(Arrays.equals(nums, copy)); // true
}
}十、常見錯誤與陷阱
| 錯誤 | 說明 | 示例 |
|---|---|---|
| 數組越界 | 索引超出范圍 | arr[10] = 5; |
| 未初始化 | 未分配內存 | int[] a; a[0] = 1; |
| 空指針異常 | 數組變量為 null | int[] b = null; b[0] = 1; |
| 混淆長度 | .length 是屬性 | arr.length() ? |
到此這篇關于Java 數組創(chuàng)建與使用詳解的文章就介紹到這了,更多相關java數組使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決feign之間文件上傳報錯:Error converting request body
這篇文章主要介紹了解決feign之間文件上傳報錯:Error converting request body的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結果)
這篇文章主要介紹了MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結果),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Spring Boot中使用LDAP來統一管理用戶信息的示例
本篇文章主要介紹了Spring Boot中使用LDAP來統一管理用戶信息的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
Java8 中使用Stream 讓List 轉 Map使用問題小結
這篇文章主要介紹了Java8 中使用Stream 讓List 轉 Map使用總結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-06-06

