目錄
一、前言
二、陣列的定義
1 .概述
2.靜態初始化數組
4.總結
三、陣列的屬性
1.訪問
%%PRE_BLOCK_5%%
首頁 Java java教程 Java數組的使用方法實例分析

Java數組的使用方法實例分析

May 10, 2023 pm 05:19 PM
java

一、前言

學習概述:前八天我們學習了語法基礎、運算子與表達式、循環結構、分支結構,今天主要學習數組的定義、相關的屬性方法、數組存儲的記憶體圖、常見錯誤

學習目標:掌握陣列的兩種定義方法、相關屬性、了解記憶體原理、錯誤解決

二、陣列的定義

1 .概述

假如有一個班同學的成績需要存儲,該使用什麼方法呢?

像我們之前學習的,可以定義多個變數儲存不同的成績。但是要有1000多個學生,那麼到定義1000多個變數嗎?當然不行,這就需要用到我們的陣列了。

2.靜態初始化數組

特點:定義數組的時候直接給數組賦值,由系統決定數組長度

通用格式:

# #資料型別[] 陣列名稱= { 元素1,元素2 ,元素3,… };

例如:
int [] array= {1,2,3,4,5};
double[] scores = {88.5, 99.5, 59.5};

3.動態初始化陣列

特點:定義陣列時確了定元素的型別和陣列的長度,之後存入資料

通用格式:

資料型別[] 陣列名稱= new 資料型別[長度];

例如:
int [] array= new int [5];
double[] scores = new double[3];

#預設值:

##資料型別基本型別byte、short、char、int、longfloat、double##boolean #參考類型

4.總結

  • 陣列適合同種類型的大量資料

  • 靜態初始化適合知道了元素值

  • 動態初始化適合不清楚存入哪些資料

三、陣列的屬性

1.訪問

##一般訪問陣列的方式為:

陣列名稱[索引]

#範例:

//静态初始化数组
int [] array= {1,2,3,4,5};
System.out.println(array[0]);//输出 1
System.out.println(array[1]);//输出 2
System.out.println(array[3]);//输出 4

2.長度

長度可以直接呼叫length得到數組的長度。

例題:

//静态初始化数组
int [] array= {1,2,3,4,5};
System.out.println(array.length);//调用方法,输出长度 5
//最大索引array.length-1

3.遍歷

遍歷就是一個陣列元素的訪問,主要應用在搜尋、資料統計......

我們之前學了循環結構、分支結構,下面透過for迴圈遍歷一個陣列

例題:

給定元素{10,8,9,4,5,6,8 ,71,2,3,9,99},用靜態陣列儲存並輸出數組中大於5的元素?

編碼實作:

//静态初始化数组
int [] array= {10,8,9,4,5,6,8,71,2,3,9,99};
for(int i=0;i<array.length;i++)
{
	if(array[i]>5)
		System.out.println(array[i]);
}

輸出結果:

10 8 9 6 8 71 9 99 

#四、記憶體圖

Java數組的使用方法實例分析

  • Java在程式運行時,需要在記憶體中分配空間,並對空間進行了不同區域的劃分。

  • 堆疊記憶體:儲存局部變量,使用完畢立即消失

  • 堆疊記憶體:儲存new 出來的內容(物件、實體),位址使用完畢在垃圾回收器空閒時回收

1.單數組記憶體圖

下面的建立陣列程式碼,實現它的記憶體關係圖

編碼實作:

//动态初始化数组
int [] arr=new int[3];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//修改值
arr[0]=100;
arr[2]=200;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

輸出結果:

[I@15db9742

0
0
0
[I@15db9742
100
0
200

原理講解:

Java數組的使用方法實例分析

  • #動態初始化先在堆記憶體產生一個new一個arr位址值,具體看編譯器的結果,這裡假設001。由於動態初始化,所以每個元素都有一個初始值,可以看上面的表。我們輸出元素,先存取陣列名稱位址,到堆記憶體下標,再輸出元素值。

  • 修改陣列值,歷程和檢視相同,只不過多了一步修改的過程,如下圖:

Java數組的使用方法實例分析

2.多數組記憶體圖

Java數組的使用方法實例分析

多個陣列和單數組記憶體使用原理相同,這裡我就不過多講述了。

3.陣列指向相同記憶體

假如我們把兩個陣列的位址值改為相同,修改後的結果該是如何,如下面的程式碼。

編碼實作:

//动态初始化数组
int [] arr=new int[3];
arr[0]=100;
arr[1]=200;
arr[2]=300;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
int [] arr2=arr;
arr2[0]=111;
arr2[1]=222;
arr2[2]=333;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr2);
System.out.println(arr2[0]);

輸出結果:

[I@15db9742

100
200
300
[I@ 15db9742
111
[I@15db9742
111

原理講解:

Java數組的使用方法實例分析

第一個陣列在堆記憶體的位址為001,第二個陣列也是001,所以修改第二個陣列的值,其實都是同一個陣列記憶體。第一個陣列的值也會隨著改變,結果如下:

Java數組的使用方法實例分析

五、常見問題

1.索引越界

//静态初始化数组
int [] array= {1,2,3};
System.out.println(array[3]);

  • 上面的程式碼執行之後,會出現下面的報錯例外:

  • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

  • 解釋:我們靜態化初始數組給了3個數字,最大索引為2,當我們訪問3時,就會報錯

2.空指針異常

//动态初始化数组
int [] array= new int[3];
array=null;
System.out.println(array[0]);

  • 上面的程式碼執行之後,會出現下面的報錯異常:

  • Exception in thread "main" java.lang.NullPointerException

  • 解釋:我們將陣列置為null,導致存取的陣列不指向堆記憶體的資料

具體定義類型 預設值

0

0.0

false

#類別、介面、陣列、String

null

以上是Java數組的使用方法實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何在Java中創建文件 如何在Java中創建文件 Sep 21, 2025 am 03:54 AM

UseFile.createNewFile()tocreateafileonlyifitdoesn’texist,avoidingoverwriting;2.PreferFiles.createFile()fromNIO.2formodern,safefilecreationthatfailsifthefileexists;3.UseFileWriterorPrintWriterwhencreatingandimmediatelywritingcontent,withFileWriterover

文件夾在哪裡找 文件夾在哪裡找 Sep 20, 2025 am 07:57 AM

最直接的方法是回憶保存位置,通常在桌面、文檔、下載等文件夾;若找不到,可使用系統搜索功能。文件“失踪”多因保存路徑未留意、名稱記憶偏差、文件被隱藏或云同步問題。高效管理建議:按項目、時間、類型分類,善用快速訪問,定期清理歸檔,並規範命名。 Windows通過文件資源管理器和任務欄搜索查找,macOS則依賴訪達和聚焦搜索(Spotlight),後者更智能高效。掌握工具並養成良好習慣是關鍵。

如何在Java中的類Path中添加JAR文件? 如何在Java中的類Path中添加JAR文件? Sep 21, 2025 am 05:09 AM

使用-cp參數可將JAR加入類路徑,使JVM能加載其內類與資源,如java-cplibrary.jarcom.example.Main,支持多JAR用分號或冒號分隔,也可通過CLASSPATH環境變量或MANIFEST.MF配置。

如何在Java中實現接口? 如何在Java中實現接口? Sep 18, 2025 am 05:31 AM

使用implements關鍵字實現接口,類需提供接口中所有方法的具體實現,支持多接口時用逗號分隔,確保方法為public,Java8後默認和靜態方法無需重寫。

了解Java仿製藥和通配符 了解Java仿製藥和通配符 Sep 20, 2025 am 01:58 AM

Javagenericsprovidecompile-timetypesafetyandeliminatecastingbyallowingtypeparametersonclasses,interfaces,andmethods;wildcards(?,?extendsType,?superType)handleunknowntypeswithflexibility.1.UseunboundedwildcardwhentypeisirrelevantandonlyreadingasObject

如何讀取Java中的屬性文件? 如何讀取Java中的屬性文件? Sep 16, 2025 am 05:01 AM

使用Properties類可輕鬆讀取Java配置文件。 1.將config.properties放入資源目錄,通過getClassLoader().getResourceAsStream()加載並調用load()方法讀取數據庫配置。 2.若文件在外部路徑,使用FileInputStream加載。 3.使用getProperty(key,defaultValue)處理缺失鍵並提供默認值,確保異常處理和輸入驗證。

如何在Java中實現生產者問題? 如何在Java中實現生產者問題? Sep 16, 2025 am 05:06 AM

使用wait()和notify()實現生產者消費者問題:通過synchronized方法控制對共享緩衝區的訪問,生產者在緩衝區滿時等待,消費者在緩衝區空時等待,利用notify()喚醒對應線程。 2.使用java.util.concurrent包中的BlockingQueue可更簡便地實現線程安全的數據交換,避免手動管理鎖和條件等待。

Python將字符串轉換為DateTime示例 Python將字符串轉換為DateTime示例 Sep 18, 2025 am 02:34 AM

使用datetime.strptime()方法可將字符串轉換為datetime對象,需確保格式符與字符串完全匹配;2.常見格式符包括%Y(四位年)、%m(月)、%d(日)、%H(時)、%M(分)、%S(秒)等;3.對於帶AM/PM的時間使用%I和%p,對於ISO格式可直接用datetime.fromisoformat();4.若格式不匹配會拋出ValueError,處理多種格式時推薦使用dateutil.parser.parse()自動識別。正確使用這些方法能高效完成字符串到datetime對象

See all articles