5、java中的数组
1、簡介
數組是一種具有隨機存取特性的數據結構,是內存上一段連續區域的表示,是實現順序存儲的基礎,數組只能用于存儲同一類型的數據。數組的長度在初始化時定義之后就不可更改,并且在初始化數組時必須指定數組的長度。
2、數組的聲明和賦值
這里用一維數組為例,創建數組有以下兩種方式,一是聲明時直接賦值,而是先聲明后賦值。
第一種:
Int []array = {1,2,3} ;//聲明并給數組賦值,長度為3
第二種:
Int []array = new int[3];//聲明一個長度為3的數組,這個時候在堆中已經開辟了空間,長度為3
array[0] = 1;
array[1] = 2;
array[2] = 3;//賦值
這里注意的是數組的下標是從0開始的,例如聲明一個長度為3的數組,那么他的最后一個下標是2,當給下標大于2的元素賦值時就會報錯。
3、內存分配
數組是引用數據類型,當聲明一個長度為len數組時,就會在堆內存中開辟一段連續長度為len的區域,然后棧中的變量的值則存儲的是指向數組第一個元素的地址,也就是下標為0的元素的地址。
現在用2中聲明的數組來說名一下內存的分配情況,int []array = new int[3];這樣創建一個數組時,在棧中則會開辟一個空間存儲變量名array,在堆中開辟3塊連續的并且每一塊占用的空間是相同的空間,而array變量的值則是堆中3塊連續空間的第一塊空間的地址,以后不管是設置數組值還是獲取數組值時都直接根據地址進行設置即可,例如這里聲明的是int數組,那么每一個元素占4個字節大小的空間,則會在內存中開辟3塊連續的并且每一塊空間長度都是4個字節大小的空間,然后array的值是一個塊空間的地址值,假如array=0x1234,那么array[0]=0x1234,array[1] = 0x1234+4*1=0x1238,這樣便使得數組具有隨機存取的特性,這也是數組為什么只能存儲同一類型數據的根本原因。
基本內存分配情況如下圖:
4、基本操作
對于數組的操作無非就是設置、獲取、遍歷、排序和求最值
設置值就不說了,說一下其他幾個。
獲取數組中的值,直接根據數組的下標獲取即可,例如想獲取array中第二個元素的值,則直接使用array[1]來獲取即可。
遍歷數組的值,遍歷的概念就是將數組中的值挨個獲取一遍,這個時候就可以使用循環語句來獲取即可,這里說一下數組有一個屬性length,可以獲取數組的長度。
for(int i=0 ; i <array.length; i++){System.out.println(array[i]);//根據下標獲取每一個值}給數組中的元素進行排序,實現數組排序的方式有很多算法,可以嘗試著去了解一下,這里就不細說了(有一篇文章詳細的介紹了排序算法),只要記住沒有什么問題是不能通過使用一個中間層來解決的就可以了,java中提供了處理數組的工具類Arrays,其中的sort方法直接可以實現數組的排序
求最值的操作,這里先說一下,java已經提供了Arrays類來處理數組,開發時直接使用即可,這里簡單的說一下實現的過程,就是借助一個臨時變量,然后遍歷每一個數組的元素,比較每一個元素,將每一次的較大值存放在臨時變量中,當數組變量結束時臨時變量便是最大值
int max = array[0];//假設最大值是array[0]for(int i=1 ; i<array.length;i++){if(array[i] > max){max = array[i];}}System.out.println(“最大值是max=”+max);5、二維數組
二維數組沒什么好說的,二維數組就是一個每一個元素都是一維數組的一維數組,創建方式如下:
創建一個二維數組,他的長度是2,元素是長度為3的一維數組
Int [][]array = new int[2][3];//
或者:
Int [][]array = {{1,2,3},{1,2,3}};
對于二維數組的操作和一維數組相同,只是多一層循環而已,就是先處理二維數組的每一個元素,又因為每一個元素是一維數組,又要循環處理每一個元素。
需要自己動手去測試,動腦去思考。
總結
以上是生活随笔為你收集整理的5、java中的数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4、java中的流程控制(程序结构)
- 下一篇: 工业设计专业介绍 工业设计专业详解