Java-數(shù)組

一、初步認識數(shù)組

1.理解數(shù)組

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

定義:數(shù)組是用來存儲相兼容數(shù)據(jù)類型的定長的容器

2.數(shù)組的特點

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

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

c.數(shù)組是定長的,一旦一個數(shù)組被初始化,那么這個數(shù)組的長度就不能再發(fā)生改變

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

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

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

可以自動的給存儲到數(shù)組中的數(shù)據(jù)進行編號,從0開始,方便操作數(shù)據(jù)

這些編號就被稱為下標,角標,或者索引

編號和數(shù)據(jù)之間存在著一一對應(yīng)的關(guān)系,通過編號,就可以直接找到相對應(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ù)組中存儲的元素的數(shù)據(jù)類型

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

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

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

初始化時由程序員指定每個元素的初始值,由系統(tǒng)計算數(shù)組的長度

語法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[]{元素1,元素2.。。。。};

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

? ? 可簡寫為int[] arr = {10,20,30,40};

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

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

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

語法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[元素的個數(shù)或者數(shù)組的長度];

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

整型? 0

浮點型? ? 0.0

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

布爾類型? ? false

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

注意:

a.在初始化數(shù)組時,不要靜態(tài)初始化和動態(tài)初始化同時使用,【不要在進行數(shù)組初始化時,既指定數(shù)組的長度,而且給每個元素賦初始值】

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

? ? 舉例:

? ? int x;

? ? x = 10;

? ? int[] socres;

? ? socres = new int[10];

三、數(shù)組的使用

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

通過下標【索引】

語法:數(shù)組名稱[下標]

2.獲取數(shù)組中的元素個數(shù)【數(shù)組的長度】

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

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

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

4.遍歷數(shù)組

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

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

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

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

? ? ? ? 優(yōu)點:用于遍歷數(shù)組和集合,無需下標,就可以直接獲取數(shù)組或者集合中的元素

? ? 語法:

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

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

? ? }

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

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

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

數(shù)組的引用變量存儲于??臻g中,被new出來的實際的數(shù)組存儲于堆空間中

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

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

a.寄存器,最快的一塊存儲區(qū),由編譯器根據(jù)需求進行分配,我們在程序中無法控制

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

? ? 特點:先進后出,后進先出,被執(zhí)行完成之后,該函數(shù)或者語句中的變量將被銷毀,所占用的空間將會被釋放

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

? ? 特點;執(zhí)行完之后不會立即被釋放,當使用完成之后,會被標記上垃圾的標記,等待系統(tǒng)的垃圾回收機制回收它

d.方法區(qū):

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

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

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

? ? String str = "hello world";

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

1.排序

冒泡排序

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

選擇

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

2.查找

順序查找

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

二分法查找

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

? ? ? ? 查找思路:通過折半來縮小查找范圍【以升序為例,將待查找的數(shù)據(jù)與中間下標對應(yīng)的元素進行比較,如果中間下標對應(yīng)的元素大于待查找的元素的話,說明待查找的元素在前半部分】

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

優(yōu)點:1、按照索引查詢元素速度快2、能存儲大量數(shù)據(jù)3、按照索引遍歷數(shù)組方便缺點:1、根據(jù)內(nèi)容查找元素速度慢2、數(shù)組的大小一經(jīng)確定不能改變。3、數(shù)組只能存儲一種類型的數(shù)據(jù)4、增加、刪除元素效率慢5、未封...

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容