1哪替、定義
數(shù)組是一個固定長度的,包含了相同類型數(shù)據(jù)的?容器啃炸。
數(shù)組訪問下標(biāo)范圍是0到長度-1
數(shù)組的定義:
方式1: 數(shù)組元素的類型[]? 數(shù)組名;? int[] ages;推薦的. 可以吧int[]看成是一種數(shù)據(jù)類型,int類型的數(shù)組類型.
方式2:數(shù)組元素的類型? 數(shù)組名[];? ? int ages[];
數(shù)組必須先初始化,才能使用,因為初始化表示在內(nèi)存中分配空間.
初始化就是給數(shù)組元素分配內(nèi)存盹牧,并為每個元素賦初始值熄守。分為靜態(tài)初始化和動態(tài)初始化。
靜態(tài)初始化操作:
特點:有我們自己來為每一個數(shù)組元素設(shè)置初始化值,而數(shù)組的長度由系統(tǒng)(JVM)決定.
語法:數(shù)組元素類型[]? 數(shù)組名 = new 數(shù)組元素類型[]{元素1,元素2,元素3,.......};
舉例: int[] nums = new? int[]{1,3,5,7,9};
簡單寫法,必須聲明之后,立刻初始化,不能先聲明后初始化:
? int[] nums = {1,3,5,7,9};
錯誤舉例:int[] nums1; nums1={12,34};
具體報錯:Array constants can only be used in initializers
數(shù)組的動態(tài)初始化操作:
由我們來設(shè)置數(shù)組的元素個數(shù)(數(shù)組長度),而每一個數(shù)組元素的初始值有系統(tǒng)決定.
語法: 數(shù)組元素類型[] 數(shù)組名 = new 數(shù)組元素類型[ length ];
比如: int[] ages = new int[100];
int[] nums = new int[5]{1,3,5,7,9};//寫法是錯誤的,不能同時使用靜態(tài)初始化和動態(tài)初始化什么時候使用靜態(tài)初始化,什么時候使用動態(tài)初始化.
當(dāng)我們事先知道,需要存儲哪一些數(shù)據(jù)的時候,選用靜態(tài)初始化.
當(dāng)我們事先不知道,需要存儲哪些數(shù)據(jù)的時候,只能使用動態(tài)初始化?
數(shù)組一旦被定義灌曙,它的維數(shù)和維界就不再改變菊碟。因此,除了結(jié)構(gòu)的初始化和銷毀之外在刺,數(shù)組只有存取元素和修改元素值的操作逆害,無插入刪除操作。
2蚣驼、多維數(shù)組
嚴(yán)格上說,在Java中不存在多維數(shù)組的概念,和C語言做區(qū)分,一般稱之為數(shù)組中的數(shù)組.
一維數(shù)組:數(shù)組中的每一個元素都是一個值(基本類型和引用類型的值).
二維數(shù)組:數(shù)組中的每一個元素又是一個一位數(shù)組.
三維數(shù)組:數(shù)組中的每一個元素又是一個二維數(shù)組.
多維初始化和一維類似魄幕,用到時可自行查看語法。
3隙姿、java5對數(shù)組的新語法支持
1):增強for循環(huán)-foreach
通過反編譯工具查看字節(jié)碼,發(fā)現(xiàn)foreach其實在底層依然是使用for循環(huán)+索引來操作數(shù)組的.
我們把增強for循環(huán),稱之為編譯器的新特性---->語法糖.
語法糖的最大甜頭就是:讓開發(fā)者寫更少,更簡單的代碼,完成相同的功能.
2):方法的可變參數(shù)(語法糖)
方法的可變參數(shù),說的是參數(shù)的個數(shù)可變.梅垄,其底層是就是一個數(shù)組類型.
可變參數(shù)必須作為方法的最后一個參數(shù),避免參數(shù)的歧義性.
推論:方法最大只有一個可變參數(shù).
http://blog.csdn.net/testcs_dn/article/details/38920323 ? ?
這篇文章還不錯
可變參數(shù)是兼容數(shù)組類參數(shù)的,但是數(shù)組類參數(shù)卻無法兼容可變參數(shù)。
4队丝、數(shù)組拷貝
System.arraycopy(src, srcPos, dest, destPos, length)
該方法使用了native修飾符(本地方法),該方法底層使用了C/C++語言實現(xiàn)了
Java直接調(diào)用其他語言編寫好的功能:
5靡馁、java自帶的數(shù)組工具類(Arrays)
java.util.Arrays.方法(參數(shù));
常用:copyOfRange????數(shù)組復(fù)制 ? ? ????? ?toString()????轉(zhuǎn)換為字符串 ?
sort ? ? ? 排序 ? ? ? binarySearch ? 搜索 ? ? ? ? ? equals ? ?判斷是否相同 ? ? fill ? 填充?
6、其他
關(guān)于數(shù)組机久,必須提到的算法:冒泡排序臭墨、選擇排序、線性查找膘盖、折半查找(順序存儲胧弛,元素有序)。算法部分內(nèi)容侠畔,以后重開一個文集做記錄结缚。