Java中數(shù)組與棧和堆之間的關系說明
Java中數(shù)組與棧和堆的關系
關于數(shù)組的定義這里就不做敘述,因為與C語言并無不同之處。

數(shù)組的初始化有三種方式:
int[ ] array1 = { 1, 2, 3, 4, 5 };
int[ ] array2 = new int[ ] { 1, 2, 3, 4, 5 };
int[ ] array3 = new int[10 ];第一種和第二種它們兩個沒有區(qū)別,寫哪個表示的含義都相同;第三個則類似C語言中的不完全初始化,只是給定了范圍,里面的數(shù)字編譯器默認會給0。
關于數(shù)組在內(nèi)存中的存儲、上述的語法以及不同的數(shù)據(jù)類型所代表的默認值,如下圖所示:



接下來的圖描述了關于兩個引用指向同一個對象時的內(nèi)存棧和堆的分配情況,了解了這些才算是真正理解了數(shù)組。(JVM:Java虛擬機)


接下來我們來認識下null (空引用)。



在前面基本數(shù)據(jù)類型的方法的引用我們說過,基本數(shù)據(jù)類型傳參時形參不會影響實參的值;但是今天要講的引用數(shù)據(jù)類型的形參可以改變實參的值,先從一道例題來引入這個內(nèi)容。
問:給定一個數(shù)組{ 1, 2,3, 4, 5 },將數(shù)組內(nèi)的元素全部擴大兩倍,怎么寫?

下面是運行時的編譯器的處理過程:

將其放在棧和堆上的表示方法:

那么問題來了,引用數(shù)據(jù)類型在調(diào)用方法時的形參一定會修改實參的值嗎?
結論:不一定,看下圖:

總結:一個引用,不能指向多個對象。否則有可能不會修改實參值。
遍歷數(shù)組

還有一種遍歷數(shù)組的方式:

這里使用了 Arrays的toString 方法,把傳入的參數(shù)array表示的數(shù)組,以字符串的形式進行輸出了

例題:給定數(shù)組{ 1, 2, 3, 4, 5,6 }求數(shù)組中元素的平均值;

接下來是一些編程小技巧
1. 在數(shù)組中使用循環(huán)時,往往循環(huán)的限制條件是數(shù)組長度減一(因為是從 0 下標開始) ,所以我們可以直接用 array.length - 1 來表示這個限制條件(length表示長度),如圖:

2.我們在C語言時期知道二分查找是只能對于一個有序數(shù)組進行查找,那么如果是無序的、亂序的該怎么樣進行排序呢,有兩種方法:使用 Arrays.sort(array); 這個語句進行排序 或者 用循環(huán)來弄一個冒泡排序。(這里只講語句排序)如圖:

3.數(shù)組拷貝、數(shù)組部分拷貝、擴大數(shù)組。全部都各自一張圖來表示:

使用 from - to 進行擴大(不用專門去寫from和to,如果你寫的正確,編譯器會自動識別上去),取值范圍是( ]; ,例如本圖是(1 ,3]


總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot配置主從數(shù)據(jù)庫實現(xiàn)讀寫分離
現(xiàn)在的 Web 應用大都是讀多寫少,本文主要介紹了SpringBoot配置主從數(shù)據(jù)庫實現(xiàn)讀寫分離,具有一定的參考價值,感興趣的可以了解一下2023-11-11
Java的HttpClient中使用POST請求傳遞參數(shù)兩種常見方式
Apache HttpClient為開發(fā)者提供了豐富的接口,用于管理HTTP連接并執(zhí)行請求,下面這篇文章主要介紹了Java的HttpClient中使用POST請求傳遞參數(shù)兩種常見方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-06-06
Java中使用MongoDB數(shù)據(jù)庫實例Demo
MongoDB是由C++語言編寫的,基于分布式文件存儲的數(shù)據(jù)庫,是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是最接近于關系型數(shù)據(jù)庫的NoSQL數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關于Java中使用MongoDB數(shù)據(jù)庫的相關資料,需要的朋友可以參考下2023-12-12
SpringBoot在IDEA中實現(xiàn)熱部署的步驟
這篇文章主要介紹了SpringBoot在IDEA中實現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11

