Java-數(shù)組

一膀值、初步認(rèn)識(shí)數(shù)組

1.理解數(shù)組

Java提供了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)幽七,主要可以將大量的數(shù)據(jù)存儲(chǔ)起來(lái)

定義:數(shù)組是用來(lái)存儲(chǔ)相兼容數(shù)據(jù)類型的定長(zhǎng)的容器

2.數(shù)組的特點(diǎn)

a.數(shù)組中只能存放相兼容類型的數(shù)據(jù)局冰,不能存放多種類型的數(shù)據(jù)

b.數(shù)組中既可以存儲(chǔ)基本數(shù)據(jù)類型,也可以存儲(chǔ)引用數(shù)據(jù)類型

c.數(shù)組是定長(zhǎng)的殿漠,一旦一個(gè)數(shù)組被初始化傻寂,那么這個(gè)數(shù)組的長(zhǎng)度就不能再發(fā)生改變

d.數(shù)組相當(dāng)于是一個(gè)容器

e.數(shù)組中存儲(chǔ)的數(shù)據(jù)被稱為元素

3.使用數(shù)組的好處

可以自動(dòng)的給存儲(chǔ)到數(shù)組中的數(shù)據(jù)進(jìn)行編號(hào),從0開始域庇,方便操作數(shù)據(jù)

這些編號(hào)就被稱為下標(biāo)嵌戈,角標(biāo),或者索引

編號(hào)和數(shù)據(jù)之間存在著一一對(duì)應(yīng)的關(guān)系听皿,通過編號(hào)熟呛,就可以直接找到相對(duì)應(yīng)的數(shù)據(jù) ??

4.數(shù)組的定義

注意:數(shù)組屬于引用數(shù)據(jù)類型,本身仍然是一種數(shù)據(jù)類型尉姨,所以可以定義數(shù)組變量

數(shù)據(jù)類型 變量名稱 = 初始值庵朝;

方式一:數(shù)據(jù)類型[] 數(shù)組名稱;

方式二:數(shù)據(jù)類型 數(shù)組名稱[];

推薦使用方式一又厉,c#已經(jīng)不支持方式二定義數(shù)組

int x = 10;

int[] a;

int a[];

說明:int是一種基本數(shù)據(jù)類型九府,int[]是數(shù)組類型,在這里覆致,int表示數(shù)組中存儲(chǔ)的元素的數(shù)據(jù)類型

二侄旬、數(shù)組的初始化

所謂初始化,Java中的數(shù)據(jù)必須先進(jìn)行初始化煌妈,然后才能使用儡羔,為數(shù)組中的元素分配內(nèi)存空間,并為每個(gè)元素賦初始值

1.靜態(tài)初始化

初始化時(shí)由程序員指定每個(gè)元素的初始值璧诵,由系統(tǒng)計(jì)算數(shù)組的長(zhǎng)度

語(yǔ)法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[]{元素1汰蜘,元素2.。之宿。族操。。}比被;

例如:int[] arr = new int[]{10,20,30,40};

? ? 可簡(jiǎn)寫為int[] arr = {10,20,30,40};

說明:任何一個(gè)變量都需要由自己確定的數(shù)據(jù)類型坪创,這里的arr表示是數(shù)組變量名稱炕婶,int表示數(shù)組中元素的類型,int[]表示數(shù)組類型

2.動(dòng)態(tài)初始化

初始化時(shí)由程序員指定數(shù)組的長(zhǎng)度莱预,由系統(tǒng)分配初始值

語(yǔ)法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[元素的個(gè)數(shù)或者數(shù)組的長(zhǎng)度];

初始值的分配規(guī)則:

整型? 0

浮點(diǎn)型? ? 0.0

字符型 \u0000? 【空格,方框】

布爾類型? ? false

引用數(shù)據(jù)類型? null

注意:

a.在初始化數(shù)組時(shí)项滑,不要靜態(tài)初始化和動(dòng)態(tài)初始化同時(shí)使用依沮,【不要在進(jìn)行數(shù)組初始化時(shí),既指定數(shù)組的長(zhǎng)度枪狂,而且給每個(gè)元素賦初始值】

b.既然數(shù)組也是一種數(shù)據(jù)類型危喉,所以在定義數(shù)組的時(shí)候,也可以先聲明州疾,然后再初始化

? ? 舉例:

? ? int x;

? ? x = 10;

? ? int[] socres;

? ? socres = new int[10];

三辜限、數(shù)組的使用

1.訪問數(shù)組的元素值

通過下標(biāo)【索引】

語(yǔ)法:數(shù)組名稱[下標(biāo)]

2.獲取數(shù)組中的元素個(gè)數(shù)【數(shù)組的長(zhǎng)度】

在Java中,所有的數(shù)組都提供了一個(gè)length屬性严蓖,通過這個(gè)屬性可以訪問數(shù)組的長(zhǎng)度或者元素的個(gè)數(shù)

語(yǔ)法:數(shù)組名稱.length

3.給數(shù)組元素賦值或者修改值

4.遍歷數(shù)組

遍歷:依次訪問數(shù)組中的每一個(gè)元素【通過不同的下標(biāo)獲取各自對(duì)應(yīng)的值】

? ? 1>簡(jiǎn)單for循環(huán)【while循環(huán)】

? ? 2>增強(qiáng)for循環(huán)【foreach循環(huán)】

? ? ? ? JDK1.5之后新增的

? ? ? ? 優(yōu)點(diǎn):用于遍歷數(shù)組和集合薄嫡,無(wú)需下標(biāo),就可以直接獲取數(shù)組或者集合中的元素

? ? 語(yǔ)法:

? ? for(數(shù)組元素類型 變量名 :數(shù)組或者集合名稱) {

? ? ? ? //循環(huán)體

? ? }

四颗胡、內(nèi)存中的數(shù)組

數(shù)組是一種引用數(shù)據(jù)類型毫深,數(shù)組引用變量其實(shí)就是一個(gè)引用,數(shù)組元素和引用在內(nèi)存中是分開存放

數(shù)組引用變量可以指向任何有效的內(nèi)存空間毒姨,只有當(dāng)該引用指向有效的空間之后哑蔫,才可以通過這個(gè)引用操作數(shù)組中的的元素,當(dāng)引用賦值為null弧呐,表示該引用指向了一個(gè)無(wú)效的空間

數(shù)組的引用變量存儲(chǔ)于椪⒚裕空間中,被new出來(lái)的實(shí)際的數(shù)組存儲(chǔ)于堆空間中

總結(jié):對(duì)于引用數(shù)據(jù)類型俘枫,當(dāng)兩個(gè)引用變量指向同一塊內(nèi)存空間時(shí)腥沽,當(dāng)修改一個(gè)變量的值時(shí),另外一個(gè)也跟著變化

擴(kuò)展:內(nèi)存的分類

a.寄存器,最快的一塊存儲(chǔ)區(qū)崩哩,由編譯器根據(jù)需求進(jìn)行分配巡球,我們?cè)诔绦蛑袩o(wú)法控制

b.棧:存放基本數(shù)據(jù)類型的變量以及引用數(shù)據(jù)類型的引用

? ? 特點(diǎn):先進(jìn)后出,后進(jìn)先出邓嘹,被執(zhí)行完成之后酣栈,該函數(shù)或者語(yǔ)句中的變量將被銷毀,所占用的空間將會(huì)被釋放

c.堆:存放所有使用new關(guān)鍵字創(chuàng)建出來(lái)的實(shí)體

? ? 特點(diǎn);執(zhí)行完之后不會(huì)立即被釋放汹押,當(dāng)使用完成之后矿筝,會(huì)被標(biāo)記上垃圾的標(biāo)記,等待系統(tǒng)的垃圾回收機(jī)制回收它

d.方法區(qū):

? ? 靜態(tài)域:存放靜態(tài)變量【static】

? ? 常量池:存放字符串常量和基本數(shù)據(jù)類型的常量

? ? int[] arr = {235,54};

? ? String str = "hello world";

五棚贾、數(shù)組的應(yīng)用

1.排序

冒泡排序

? ? 排序思路:比較兩個(gè)相鄰的下標(biāo)對(duì)應(yīng)的元素窖维,如果符合條件就交換位置【最值出現(xiàn)在最右邊】

選擇

? ? 排序思路:固定一個(gè)下標(biāo)榆综,然后使用這個(gè)下標(biāo)對(duì)應(yīng)的元素和其余的元素進(jìn)行比較,如果符合條件就交換位置【最值出現(xiàn)在最左邊】

2.查找

順序查找

? ? ? ? 將要查找的數(shù)據(jù)和數(shù)組中的元素進(jìn)行一一的比對(duì)铸史,如果相等鼻疮,說明查找到了

二分法查找

? ? ? ? 前提條件:數(shù)組必須是有序的

? ? ? ? 查找思路:通過折半來(lái)縮小查找范圍【以升序?yàn)槔瑢⒋檎业臄?shù)據(jù)與中間下標(biāo)對(duì)應(yīng)的元素進(jìn)行比較琳轿,如果中間下標(biāo)對(duì)應(yīng)的元素大于待查找的元素的話判沟,說明待查找的元素在前半部分】

數(shù)組優(yōu)缺點(diǎn)總結(jié)

優(yōu)點(diǎn):1、按照索引查詢?cè)厮俣瓤?崭篡、能存儲(chǔ)大量數(shù)據(jù)3挪哄、按照索引遍歷數(shù)組方便缺點(diǎn):1、根據(jù)內(nèi)容查找元素速度慢2琉闪、數(shù)組的大小一經(jīng)確定不能改變迹炼。3、數(shù)組只能存儲(chǔ)一種類型的數(shù)據(jù)4颠毙、增加斯入、刪除元素效率慢5、未封...

優(yōu)點(diǎn):數(shù)組定義簡(jiǎn)單吟秩,而且訪問很方便缺點(diǎn):數(shù)組中所有元素類型都必須相同 數(shù)組大小必須定義時(shí)給出咱扣,而且大多數(shù)情況下,數(shù)組空間的大小一旦確定后就不能更改 數(shù)組的空間必須是連續(xù)的涵防,這就造成數(shù)組在內(nèi)存中分配空間...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闹伪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壮池,更是在濱河造成了極大的恐慌偏瓤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椰憋,死亡現(xiàn)場(chǎng)離奇詭異厅克,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)橙依,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門证舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窗骑,你說我怎么就攤上這事女责。” “怎么了创译?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵抵知,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)刷喜,這世上最難降的妖魔是什么残制? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮掖疮,結(jié)果婚禮上初茶,老公的妹妹穿的比我還像新娘。我一直安慰自己浊闪,他們只是感情好纺蛆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著规揪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪温峭。 梳的紋絲不亂的頭發(fā)上猛铅,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音凤藏,去河邊找鬼奸忽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛揖庄,可吹牛的內(nèi)容都是我干的栗菜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蹄梢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疙筹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起禁炒,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤而咆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后幕袱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暴备,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年们豌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涯捻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡望迎,死狀恐怖障癌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擂煞,我是刑警寧澤混弥,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響蝗拿,放射性物質(zhì)發(fā)生泄漏晾捏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一哀托、第九天 我趴在偏房一處隱蔽的房頂上張望惦辛。 院中可真熱鬧,春花似錦仓手、人聲如沸胖齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呀伙。三九已至,卻和暖如春添坊,著一層夾襖步出監(jiān)牢的瞬間剿另,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工贬蛙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雨女,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓阳准,卻偏偏與公主長(zhǎng)得像氛堕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子野蝇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔讼稚,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 2,737評(píng)論 2 9
  • 數(shù)組類型和數(shù)組引用變量詳解 數(shù)組類型為什么要用數(shù)組浪耘?Java數(shù)組的兩大特征:定義數(shù)組時(shí)乱灵,不能指定數(shù)組的長(zhǎng)度變量分為...
    Ansaxnsy閱讀 2,869評(píng)論 2 3
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,783評(píng)論 1 10
  • 數(shù)組的概念: 數(shù)組是一個(gè)容器,存放一組相同數(shù)據(jù)類型變量的容器 數(shù)組的格式: 數(shù)據(jù)類型[] 數(shù)組名; Java寫法 ...
    i_4178閱讀 466評(píng)論 0 0
  • 1. Java數(shù)組是靜態(tài)的 Java是靜態(tài)語(yǔ)言,所以Java的數(shù)組也是靜態(tài)的七冲,即:數(shù)組被初始化后痛倚,長(zhǎng)度不可變 靜態(tài)...
    CoderJed閱讀 7,432評(píng)論 0 8