Java由淺入深細(xì)數(shù)數(shù)組的操作上
本篇介紹一維數(shù)組以及相關(guān)操作,二維數(shù)組放在下一篇
1.JVM的內(nèi)存分布
Java的代碼是運(yùn)行在JVM上的,為了方便管理,對所使用的內(nèi)存按照功能的不同進(jìn)行了劃分,這不是本篇重點(diǎn),只做簡單的介紹:
Java虛擬棧:局部變量在這里開辟空間
Java本地方法棧:運(yùn)行一些由C/C++編寫的程序
堆:對象在這里存儲,且開辟后的空間使用完畢后Java會自動收回,不需要我們再寫free
程序計(jì)數(shù)器:存儲指令
方法區(qū):存儲靜態(tài)變量、類、常量等
之前的int、double等都是在Java棧中開辟空間,而數(shù)組則是在堆上開辟的空間
2.引用類型變量的特點(diǎn)
引用類型變量并不會直接存儲對象本身,它所存儲的是對象本身在堆中的首地址,通過地址來操作對象,假設(shè)有一個數(shù)組arr,數(shù)組中有1~5共5個元素,數(shù)組起始地址是0x0001,那么這個數(shù)組在JVM中的存儲情況如下:

基本類型的數(shù)據(jù)空間中保存的都是初始化的值,這也是二者之間的區(qū)別
3.一維數(shù)組的使用
3.1定義和初始化
一維數(shù)組的定義和初始化如下:
int [] arr1 = {1,2,3,4,5};
int [] arr2 = new int [] {1,2,3,4,5};
int [] arr3 = new int [5]; //數(shù)組元素的值默認(rèn)為0同Java中的int等變量一樣,數(shù)組也必須進(jìn)行初始化,若數(shù)組初始化不知道給多大空間,元素給什么值,那么可以先賦值null
null在Java中表示空引用,int [] arr=null 就說明arr引用的是一個空對象,這個要和C語言中的NULL區(qū)分開來
3.2數(shù)組的訪問
依舊是通過下標(biāo)來對數(shù)組進(jìn)行訪問,下標(biāo)還是從0開始,有一點(diǎn)和C語言不同
假設(shè)數(shù)組有10個元素,我們打印第11個元素,C語言中會打印隨機(jī)值,但在Java中則是直接報(bào)錯

3.3打印數(shù)組所有的元素
在打印之前有一個問題需要解決:如何確定數(shù)組的長度
Java中沒有給類似C語言中的sizeof的操作符,而是采用“數(shù)組名.length”來求數(shù)組長度,如下圖:

現(xiàn)在來看看我們有多少種打印數(shù)組所有元素的方式:
- 循環(huán)語句:這個就不展開講了,過于簡單
- foreach
具體結(jié)構(gòu)如下:

冒號左邊寫打印的元素的數(shù)據(jù)類型,右邊寫數(shù)組名

Array.toString
這個是將數(shù)組的內(nèi)容轉(zhuǎn)換成字符串,這樣就可以按照打印字符串的方式來打印,使用前要引用包(類似C語言中的引用頭文件)
引用方法:
import java.util.Arrays

3.4數(shù)組的拷貝
- 循環(huán)語句:依舊跳過
- Arrays.copyOf()
此方法返回值是數(shù)組,有兩個參數(shù),分別是拷貝的目標(biāo)和拷貝的數(shù)組的長度

- System.arraycopy()
此方法有5個參數(shù),從左至右依次是:源數(shù)組、源數(shù)組的起始位置、目標(biāo)數(shù)組、目標(biāo)數(shù)組的起始位置、拷貝的元素個數(shù)

- 數(shù)組名.clone()

3.5作為參數(shù)和返回值
Java中的數(shù)組可以作為返回值,這沒有什么需要注意的地方
數(shù)組作為參數(shù),因?yàn)樽兞看娣诺氖堑刂?,所以在?shí)參傳參的時候?qū)嶋H上是將地址傳遞過去, 形參接收的也是地址,形參通過地址可以對堆上的數(shù)組進(jìn)行操作
一維數(shù)組內(nèi)容結(jié)束,完
到此這篇關(guān)于Java由淺入深細(xì)數(shù)數(shù)組的操作的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring在多線程下保持事務(wù)的一致性的方法實(shí)現(xiàn)
當(dāng)Spring在多線程環(huán)境下運(yùn)行時,確保事務(wù)一致性是非常重要的,本文主要介紹了Spring在多線程下保持事務(wù)的一致性的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
在CentOS系統(tǒng)上安裝Java的openjdk的方法
這篇文章主要介紹了在CentOS系統(tǒng)上安裝Java的openjdk的方法,同樣適用于Fedora等其他RedHat系的Linux系統(tǒng),需要的朋友可以參考下2015-06-06
java 在圖片上寫字,兩個圖片合并的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava 在圖片上寫字,兩個圖片合并的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
Selenium+Tesseract-OCR智能識別驗(yàn)證碼爬取網(wǎng)頁數(shù)據(jù)的實(shí)例
本文主要介紹了Selenium+Tesseract-OCR智能識別驗(yàn)證碼爬取網(wǎng)頁數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Java實(shí)現(xiàn)Map遍歷key-value的四種方法
本文主要介紹了Java實(shí)現(xiàn)Map遍歷key-value的四種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SpringBoot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行
這篇文章主要介紹了Spring Boot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02

