數(shù)組的定義與使用
超過十多年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè),成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,小程序開發(fā),微信開發(fā),成都app軟件開發(fā),同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營銷和我們一樣獲得訂單和生意!一、數(shù)組的定義:相同數(shù)據(jù)類型的集合,數(shù)組在內(nèi)存中是連續(xù)空間,Java中,數(shù)組是引用數(shù)據(jù)類型,在堆中存儲。其特性有四點(diǎn),1.在數(shù)組中存放的元素類型是相同的,2.數(shù)組的空間是連續(xù)的,一個(gè)元素和一個(gè)元素之間是緊挨的,3.每個(gè)數(shù)組元素都有編號,第一個(gè)位置編號從0開始,即數(shù)組的小標(biāo)從0開始,4.數(shù)組的長度一旦定義之后就是固定的,數(shù)組定長。
數(shù)組的創(chuàng)建及初始化,1.靜態(tài)初始化,定義數(shù)組時(shí),隨即將每個(gè)元素的值也初始化好,語法為:
數(shù)組類型[] 數(shù)組名稱 = {元素值1,元素值2,....元素值N};示例:創(chuàng)建一個(gè)包含數(shù)字1,3,5,7,9的靜態(tài)數(shù)組,
2.動(dòng)態(tài)初始化,定義數(shù)組時(shí),不給元素具體賦值,定義之后再賦值,數(shù)組中每個(gè)元素都是其數(shù)據(jù)類型的默認(rèn)值,語法為:數(shù)據(jù)類型[] 數(shù)組名稱 = new 數(shù)據(jù)類型[數(shù)組長度];示例:創(chuàng)建一個(gè)長度為5的動(dòng)態(tài)數(shù)組,
?二、數(shù)組的基本使用
1.數(shù)組中元素的訪問,由于數(shù)組在內(nèi)存中是一塊連續(xù)的內(nèi)存空間,且每個(gè)數(shù)組元素都有編號,元素的編號我們稱為數(shù)組的偏移量,第一個(gè)元素的編號為0,程序只需要記錄第一個(gè)元素的地址(數(shù)組的首地址)即可,無需保存每個(gè)元素的內(nèi)存地址,根據(jù)首地址以及元素編號就可以立即取得任意一個(gè)元素的地址。數(shù)組中元素的下標(biāo)為[0...N],N就是數(shù)組的長度,數(shù)組中最后一個(gè)元素的下標(biāo)為? N-1,我們要訪問數(shù)組中任意一個(gè)元素,只需根據(jù)數(shù)組名稱 + 下標(biāo),即可立即取得,但要注意下標(biāo)的合法性問題,即下標(biāo)的大小不能超過N-1,示例如下:
我們還可以通過數(shù)組名稱.length屬性取得數(shù)組的長度,就可以根據(jù)數(shù)組長度循環(huán)遍歷數(shù)組的每一個(gè)元素,如下:用for循環(huán)來遍歷數(shù)組1的每個(gè)元素
若我們只需要取得數(shù)組元素,不修改,可以用for-each循環(huán)來遍歷,如下:
三.堆區(qū)和棧區(qū)
數(shù)組,類,接口都屬于引用數(shù)據(jù)類型,所有的引用數(shù)據(jù)類型的變量,保存的都是一塊堆內(nèi)存的地址,不是具體數(shù)值,而它的對象也保存在對結(jié)構(gòu)中,所謂的引用只不過是給對象起了個(gè)別名而已。
棧區(qū)保存的是方法的棧幀,每個(gè)方法的調(diào)用以及結(jié)束,就對應(yīng)一個(gè)方法棧幀的入棧以及出棧過程,方法中的所有局部變量都保存在棧幀中。
四.數(shù)組的使用
數(shù)組是不能直接輸出的,直接輸出只會得到其加密后的地址,要想輸出數(shù)組可以自建個(gè)方法,調(diào)用方法輸出,或者用數(shù)組相關(guān)的工具類Arrays中的toString方法,如下:
?要想拷貝數(shù)組就可以用工具類Arrays中的copyOf方法,要是只想拷貝一部分的話,就用copyOfRange方法,如下:
在數(shù)組中有一些很經(jīng)典的問題,例如在數(shù)組中查找是否存在指定數(shù)值的元素,這個(gè)問題有很多種解法,但其中最經(jīng)典的就是二分查找法,二分查找法可以很大的提高我們尋找的時(shí)間和效率,二分查找法就是在有序數(shù)組中每回取數(shù)組中間那個(gè)數(shù)與指定數(shù)值進(jìn)行比較,代碼如下:
二分查找法,也可以用遞歸的思想來解決問題,用遞歸的思想寫出來的代碼如下:
還有就是在不創(chuàng)建新的數(shù)組的情況下逆序輸出一個(gè)數(shù)組,其思想就是讓數(shù)組最左邊和最右邊的數(shù)相互交換位置,然后左右都往前移一位,再繼續(xù)交換,知道數(shù)組的中間結(jié)束,代碼如下:
?還有就是將一個(gè)數(shù)組的元素進(jìn)行排列,數(shù)組中的所有偶數(shù)放在所有奇數(shù)前面,其思想就是讓左邊元素的下標(biāo)left從左向右掃描,掃到第一個(gè)奇數(shù)就停止,讓右邊元素的下標(biāo)right從右向左掃描,掃到第一個(gè)偶數(shù)就停止,然后讓它兩個(gè)的元素交換位置,依次往下用while循環(huán),直到當(dāng)left >= right時(shí)循環(huán)結(jié)束,代碼如下:
我們上面說的數(shù)組都是一維數(shù)組,但是按照定義我們還有二維數(shù)組,三維數(shù)組等等,但基本上都用不上,只有二維數(shù)組偶爾會用到,二維數(shù)組就可以看作是一個(gè)表格,有行和列,二維數(shù)組的遍歷如下:
以上就是我學(xué)習(xí)Java數(shù)組部分所總結(jié)的知識點(diǎn),如有不對的地方,歡迎大家指正!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧