欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 數組創(chuàng)建與使用詳解

 更新時間:2025年11月10日 11:29:11   作者:Geoking.  
本文介紹了Java數組的基本概念、聲明與創(chuàng)建、初始化方式、訪問元素、長度屬性、遍歷方法以及二維數組和不規(guī)則數組的使用,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

一、什么是數組

數組(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 / long0
float / double0.0
char‘\u0000’
booleanfalse
引用類型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;
空指針異常數組變量為 nullint[] b = null; b[0] = 1;
混淆長度.length 是屬性arr.length() ?

到此這篇關于Java 數組創(chuàng)建與使用詳解的文章就介紹到這了,更多相關java數組使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java分布式事務實現原理與解決方案詳解

    Java分布式事務實現原理與解決方案詳解

    分布式事務是分布式系統中的核心挑戰(zhàn)之一,它確保跨多個獨立服務或數據源的操作能夠保持原子性、一致性、隔離性和持久性(ACID),本文給大家介紹Java生態(tài)中分布式事務的實現原理、主流解決方案及其適用場景,感興趣的朋友一起看看吧
    2025-09-09
  • Java之JFrame輸出Helloworld實例

    Java之JFrame輸出Helloworld實例

    這篇文章主要介紹了Java之JFrame輸出Helloworld的方法,以輸出Helloworld的實例分析了JFrame的簡單入門技巧,需要的朋友可以參考下
    2015-02-02
  • 通過JDK源碼學習InputStream詳解

    通過JDK源碼學習InputStream詳解

    InputStream抽象類是所有字節(jié)輸入流的類的超類。這篇文章主要給大家介紹了關于通過JDK源碼學習InputStream的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • 解決feign之間文件上傳報錯:Error converting request body的問題

    解決feign之間文件上傳報錯:Error converting request body

    這篇文章主要介紹了解決feign之間文件上傳報錯:Error converting request body的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結果)

    MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結果)

    這篇文章主要介紹了MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結果),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Boot中使用LDAP來統一管理用戶信息的示例

    Spring Boot中使用LDAP來統一管理用戶信息的示例

    本篇文章主要介紹了Spring Boot中使用LDAP來統一管理用戶信息的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java調用Oss JDk實現刪除指定目錄下的所有文件

    Java調用Oss JDk實現刪除指定目錄下的所有文件

    這篇文章主要為大家詳細介紹了Java如何調用Oss JDk實現刪除指定目錄下的所有文件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2025-03-03
  • 詳解MySQL的簡易封裝以及使用

    詳解MySQL的簡易封裝以及使用

    本文主要介紹了MySQL的簡易封裝以及使用。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Java四種權限修飾符知識點詳解

    Java四種權限修飾符知識點詳解

    在本篇文章里小編給大家分享的是關于Java四種權限修飾符知識點詳解內容,需要的朋友們可以參考下。
    2020-05-05
  • Java8 中使用Stream 讓List 轉 Map使用問題小結

    Java8 中使用Stream 讓List 轉 Map使用問題小結

    這篇文章主要介紹了Java8 中使用Stream 讓List 轉 Map使用總結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-06-06

最新評論