java數(shù)組的初始化及操作詳解
數(shù)組的基本概念
如果說(shuō)現(xiàn)在要求你定義100個(gè)整型變量,那么如果按照之前的做法,可能現(xiàn)在定義的的結(jié)構(gòu)如下:
int i1, i2, i3, ... i100;
但是這個(gè)時(shí)候如果按照此類(lèi)方式定義就會(huì)非常麻煩,因?yàn)檫@些變量彼此之間沒(méi)有任何的關(guān)聯(lián),也就是說(shuō)如果現(xiàn)在突然再有一個(gè)要求,要求你輸出這100個(gè)變量的內(nèi)容,意味著你要編寫(xiě)System.out.println()語(yǔ)句100次。
其實(shí)所謂的數(shù)組指的就是一組相關(guān)類(lèi)型的變量集合,并且這些變量可以按照統(tǒng)一的方式進(jìn)行操作。數(shù)組本身屬于引用數(shù)據(jù)類(lèi)型,那么既然是引用數(shù)據(jù)類(lèi)型,這里面實(shí)際又會(huì)牽扯到內(nèi)存分配,而數(shù)組的定義語(yǔ)法有如下兩類(lèi)。
數(shù)組動(dòng)態(tài)初始化:
聲明并開(kāi)辟數(shù)組:
數(shù)據(jù)類(lèi)型 [] 數(shù)組名稱(chēng) = new 數(shù)據(jù)類(lèi)型[長(zhǎng)度];
數(shù)據(jù)類(lèi)型 [] 數(shù)組名稱(chēng) = new 數(shù)據(jù)類(lèi)型[長(zhǎng)度];
分布進(jìn)行數(shù)組空間開(kāi)辟(實(shí)例化)
| Tables | Are |
| ------------- |:-------------😐
| 聲明數(shù)組: | 數(shù)組類(lèi)型 數(shù)組名稱(chēng)[] = null; | | | 數(shù)組類(lèi)型 [] 數(shù)組名稱(chēng) =null; | | 開(kāi)辟數(shù)組空間: | 數(shù)組名稱(chēng) =new` 數(shù)組類(lèi)型[長(zhǎng)度]; |
那么當(dāng)數(shù)組開(kāi)辟空間之后,就可以采用如下的方式的操作:
數(shù)組的訪問(wèn)通過(guò)索引完成,即:“數(shù)組名稱(chēng)[索引]”,但是需要注意的是,數(shù)組的索引從0開(kāi)始,所以索引的范圍就是0 ~ 數(shù)組長(zhǎng)度-1,例如開(kāi)辟了3個(gè)空間的數(shù)組,所以可以使用的索引是:0,1,2,如果此時(shí)訪問(wèn)的時(shí)候超過(guò)了數(shù)組的索引范圍,會(huì)產(chǎn)生java.lang.ArrayIndexOutOfBoundsException 異常信息;
當(dāng)我們數(shù)組采用動(dòng)態(tài)初始化開(kāi)辟空間后,數(shù)組里面的每一個(gè)元素都是該數(shù)組對(duì)應(yīng)數(shù)據(jù)類(lèi)型的默認(rèn)值;
數(shù)組本身是一個(gè)有序的集合操作,所以對(duì)于數(shù)組的內(nèi)容操作往往會(huì)采用循環(huán)的模式完成,數(shù)組是一個(gè)有限的數(shù)據(jù)集合,所以應(yīng)該使用 for 循環(huán)。
在 Java 中提供有一種動(dòng)態(tài)取得數(shù)組長(zhǎng)度的方式:數(shù)組名稱(chēng).length;
java編程中,我們知道程序=算法+數(shù)據(jù)結(jié)構(gòu),而最基本的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組;相同的數(shù)據(jù)類(lèi)型的元素的集合,我們稱(chēng)之為數(shù)組;以下對(duì)數(shù)組的初始化及操作做簡(jiǎn)單介紹。
聲明數(shù)組:聲明數(shù)組時(shí),我們需要設(shè)定數(shù)組元素的類(lèi)型,數(shù)組中的元素是具有相同數(shù)據(jù)類(lèi)型的;然后需要一個(gè)變量或者叫引用來(lái)指向此數(shù)組,如int[] arr 或者int arr[],兩個(gè)都可以。聲明數(shù)組:聲明數(shù)組時(shí),我們需要設(shè)定數(shù)組元素的類(lèi)型,數(shù)組中的元素是具有相同數(shù)據(jù)類(lèi)型的;然后需要一個(gè)變量或者叫引用來(lái)指向此數(shù)組,如int[] arr 或者int arr[],兩個(gè)都可以。
初始化數(shù)組:
有兩種方式進(jìn)行初始化,一是直接new,二是直接賦值
數(shù)組的訪問(wèn):獲取數(shù)組長(zhǎng)度
調(diào)用數(shù)組的length屬性即可獲取數(shù)組長(zhǎng)度。
數(shù)組的訪問(wèn):通過(guò)下標(biāo)訪問(wèn)數(shù)組元素
注意下標(biāo)是從0開(kāi)始到length-1,訪問(wèn)方式為arr[i],i為下標(biāo)。
數(shù)組的訪問(wèn):遍歷數(shù)組元素
以數(shù)組元素下標(biāo)為遞增變量,循環(huán)輸出即可遍歷。
數(shù)組的復(fù)制:System.arraycopy()
使用封裝的System.arraycopy()方法即可對(duì)當(dāng)前數(shù)組進(jìn)行復(fù)制操作。
數(shù)組的復(fù)制:Array.copyOf()
使用java.util.Array類(lèi)的此方法,也可以實(shí)現(xiàn)數(shù)組復(fù)制,此方法有以下特點(diǎn):
1.如果newLength大于原數(shù)組長(zhǎng)度,則用0或者null進(jìn)行補(bǔ)充,相當(dāng)于擴(kuò)容;
2.如果newLength小于原數(shù)組的長(zhǎng)度,則截??;
數(shù)組的排序:
常見(jiàn)的數(shù)組排序有插入排序,冒泡排序以及快速排序法,這里介紹最常用的冒泡排序法,即相鄰兩個(gè)元素進(jìn)行比較,大的元素交換到后,小的交換到前,循環(huán)以此類(lèi)推。
數(shù)組的排序:Arrays.sort()
JDK中提供的Arrays.sort()方法,也可以進(jìn)行數(shù)組排序。
相關(guān)文章
零基礎(chǔ)入門(mén)SpringMVC攔截器的配置與使用
Spring?MVC?的攔截器(Interceptor)與?Java?Servlet?的過(guò)濾器(Filter)類(lèi)似,它主要用于攔截用戶的請(qǐng)求并做相應(yīng)的處理,通常應(yīng)用在權(quán)限驗(yàn)證、記錄請(qǐng)求信息的日志、判斷用戶是否登錄等功能上。本文將代碼演示和文字描述詳解攔截器的原理與使用2022-04-04java聯(lián)調(diào)生成測(cè)試數(shù)據(jù)工具類(lèi)方式
這篇文章主要介紹了java聯(lián)調(diào)生成測(cè)試數(shù)據(jù)工具類(lèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn)
這篇文章主要介紹了詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10MybatisPlus使用@TableId主鍵id自增長(zhǎng)無(wú)效的解決
本文主要介紹了MybatisPlus使用@TableId主鍵id自增長(zhǎng)無(wú)效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java基于分治算法實(shí)現(xiàn)的線性時(shí)間選擇操作示例
這篇文章主要介紹了Java基于分治算法實(shí)現(xiàn)的線性時(shí)間選擇操作,涉及java排序、比較、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2017-11-11