Hello,今天給各位童鞋們分享Java數(shù)組谈截,趕緊拿出小本子記下來吧筷屡!
一涧偷、一維數(shù)組
(1)聲明數(shù)組變量
為了在程序中使用數(shù)組,必須聲明一個(gè)引用數(shù)組的變量毙死,并指明數(shù)組的元索類型燎潮。
聲明數(shù)組變量的語法:
elementType[] arrayRefVar;//(元素類型[] 數(shù)組引用變量 ;)
elementType arrayRefVar[];//(元素類型 數(shù)組引用變量[];)
大多數(shù) Java 應(yīng)用程序員喜歡使用第一種風(fēng)格,因?yàn)樗鼘?shù)組類型與變量名分開了
elementType
可以是任意數(shù)據(jù)類型扼倘,數(shù)組中所有的元素都必須具有相同的數(shù)據(jù)類型
arrayRefVar
是數(shù)組變量名确封,遵循用戶自定義標(biāo)識符規(guī)則
(2)數(shù)組創(chuàng)建及初始化
不同于基本數(shù)據(jù)類型變量的聲明,聲明一個(gè)數(shù)組變量時(shí)并不在內(nèi)存中給數(shù)組分配任何空間再菊。它只是創(chuàng)建一個(gè)對數(shù)組的引用的存儲(chǔ)位置爪喘。
當(dāng)給數(shù)組分配空間時(shí),必須指定該數(shù)組能夠存儲(chǔ)的元素個(gè)數(shù)纠拔,從而確定數(shù)組大小秉剑。創(chuàng)建數(shù)組之后就不能再修改它的大小。
為數(shù)組變量分配內(nèi)存空間
elementType[] arrayRefVar = new elementType[arraySize];
(元素類型[] 數(shù)組引用變量 =new 元素類型[ 數(shù)組大小];)
elementType arrayRefVar[] = new elementType[arraySize];
(元素類型數(shù)組引用變量 =new 元素類型[ 數(shù)組大小];)
數(shù)組初始化
數(shù)組元素的默認(rèn)值:
當(dāng)創(chuàng)建數(shù)組后稠诲,它的元素被賦予默認(rèn)值侦鹏,數(shù)值型基本數(shù)據(jù)類型的默認(rèn)值為 0, char 型的默認(rèn)值為 '\u0000',boolean 型的默認(rèn)值為 false吕粹。
創(chuàng)建數(shù)組對象并同時(shí)賦予初始值
將聲明數(shù)組种柑、創(chuàng)建數(shù)組和初始化數(shù)組結(jié)合到一條語句中
elementType[] arrayRefVar = {value0, value1, valuek}
數(shù)組初始化語法中不使用操作符 new。使用數(shù)組初始化語法時(shí)匹耕,必須將聲明聚请、創(chuàng)建和初始化數(shù)組都放在一條語句中。將它們分開會(huì)產(chǎn)生語法錯(cuò)誤稳其。
初始化匿名數(shù)組:
new elementType[]{value0,value1,value2...};
這種表示方法將創(chuàng)建一個(gè)新數(shù)組并利用括號中提供的值進(jìn)行初始化驶赏,數(shù)組的大小就是初始值的個(gè)數(shù),使用這種語法形式可以在創(chuàng)建新變量的情況下重新初始化數(shù)組既鞠。
arrayRefVar = new elementType[]{value0,value1,value2...};
(3)訪問數(shù)組元素
數(shù)組元素可以通過下標(biāo)訪問煤傍。數(shù)組下標(biāo)其范圍從0開始到arrayRefVar.length-1結(jié)束。
當(dāng)給數(shù)組分配空間時(shí)嘱蛋,必須指定該數(shù)組能夠存儲(chǔ)的元素個(gè)數(shù)蚯姆,從而確定數(shù)組大小。創(chuàng) 建數(shù)組之后就不能再修改它的大小洒敏×淞担可以使用 arrayRefVar.length 得到數(shù)組的大小
數(shù)組中的每個(gè)元素都可以使用下面的語法表示,稱為下標(biāo)變量(indexed variable)
arrayRefVar[index];
(數(shù)組引用變量[下標(biāo)];)
循環(huán)遍歷數(shù)組:
計(jì)數(shù)for循環(huán):
for ( int i = 0;i < arrayRefVar.length ; i++){
System.out.println(arrayRefVar[i]);
}
增強(qiáng)for each循環(huán)
for ( int element:arrayRefVar){
System.out.println(element);
(4)數(shù)組拷貝
淺拷貝
一個(gè)數(shù)組變量拷貝給另一個(gè)數(shù)組變凶伙,這時(shí)郭毕,兩個(gè)變量將引用同一個(gè)數(shù)組
elementType[] new_array = arrays ;
該語句并不能將arraysl引用的數(shù)組內(nèi)容復(fù)制給new_array, 而只是將arraysl的引用值復(fù)制給了new_array。在這條語句之后函荣,arrays和new_array 都指向同一個(gè)數(shù)組显押,實(shí)際上是將一個(gè)數(shù)組的引用復(fù)制給另一個(gè)變量扳肛,使兩個(gè)變量都指向相同的內(nèi)存地址。
深拷貝
一個(gè)數(shù)組的所有值拷貝到另個(gè)新的數(shù)組中去乘碑,
復(fù)制數(shù)組的方法:
循環(huán)賦值
使用 Arrays 類的 copyOf 方法
elementType[] new_array = Arrays. copyOf(arrays, arrays.length);
這個(gè)方法通常用來增加數(shù)組的大型谙ⅰ:如果數(shù)組元素是數(shù)值型 ,那么多余的元素將被賦值為0; 如果數(shù)組元素是布爾型 蝉仇,則將賦值false相反旋讹,如果長度小于原始數(shù)組的長度,則只拷貝最前面的數(shù)據(jù)元素轿衔。
使用 System 類中的靜態(tài)方法 arraycopy
arraycopy(sourceArray, srcPos, targetArray, tarPos, length);
參數(shù) srcPos 和 tarPos 分別表示在源數(shù)組 sourceArray 和目標(biāo)數(shù)組 targetArray 中的起始位置
arraycopy 方法沒有給目標(biāo)數(shù)組分配內(nèi)存空間沉迹。復(fù)制前必須創(chuàng)建目標(biāo)數(shù)組以及分配給它的內(nèi)存空間。
(5)命令行參數(shù)
每個(gè)Java應(yīng)用程序的main方法帶有的String[] 參數(shù)是一個(gè)字符串?dāng)?shù)組害驹。
向 main 方法傳遞字符串
java TestMain arg0 arg1 arg2
運(yùn)行程序時(shí)鞭呕,可以從命令行給 main 方法傳遞字符串參數(shù):其中,參數(shù) arg0宛官、arg1 和 arg2 都是字符串葫松,但是在命令行中出現(xiàn)時(shí),不需要放在雙引號中底洗。這些字符串用空格分隔腋么。如果字符串包含空格,那就必須使用雙引號括住亥揖。
使用命令行參數(shù)
當(dāng)調(diào)用 main 方法時(shí)珊擂,Java 解釋器會(huì)創(chuàng)建一個(gè)數(shù)組存儲(chǔ)命令行參數(shù),然后將該數(shù)組的引用傳遞給 args费变。使用args[index]調(diào)用命令行參數(shù)摧扇。
如果運(yùn)行程序時(shí)沒有傳遞字符串,那么使用 new String[0]創(chuàng)建數(shù)組挚歧。在這種情況下扛稽,該數(shù)組是長度為 0的空數(shù)組。args 是對這個(gè)空數(shù)組的引用滑负。因此在张,args 不是 null,但是 args.length 是 0。
Java 應(yīng)用程序的 main 方法中矮慕,程序名并沒有存儲(chǔ)在 args 數(shù)組中
二帮匾、多維數(shù)組
(1)聲明多維數(shù)組變量
數(shù)據(jù)類型[]...[] 數(shù)組名;
數(shù)據(jù)類型 數(shù)組名[]...[];// 允許這種方式 ,但并不推薦使用它
(2)多維數(shù)組初始化
為數(shù)組變量分配內(nèi)存空間
方法一:(推薦)
elementType[]...[] arrayRefVar = new elementType[arraySize0]...[arraySizen];
(元素類型[]...[] 數(shù)組引用變量 =new 元素類型[數(shù)組大小]...[數(shù)組大小];)
int[][] matrix;
方法二:(不推薦)
elementType arrayRefVar[]...[] = new elementType[arraySize0]...[arraySizen];
(元素類型數(shù)組引用變量 =new 元素類型[數(shù)組大小]...[數(shù)組大小];)
int matrix[][];
為數(shù)組變量賦初值
elementType[]...[] arrayRefVar = {{value},...,{value}};
每一維的長度可以不同凡傅,這類數(shù)組叫做鋸齒形數(shù)組
(3)訪問多維數(shù)組元素
數(shù)組元素可以通過下標(biāo)訪問。
arrayRefVar[index0]...[index1];
(數(shù)組引用變量[下標(biāo)0]...[下標(biāo)1];)
循環(huán)遍歷多維數(shù)組
計(jì)數(shù)循環(huán)嵌套
for-each循環(huán)嵌套(以二維數(shù)組為例)
(4)多維數(shù)組是數(shù)組的數(shù)組
Java 實(shí)際上沒有多維數(shù)組肠缔,只有一維數(shù)組夏跷,多維數(shù)組可以看作"數(shù)組的數(shù)組”哼转。
每一個(gè)n維數(shù)組,可以看作n-1維數(shù)組的數(shù)組槽华,其中每個(gè)元素可以看作n-1維數(shù)組的引用:
因此可以逐行申請多維數(shù)組:
使用語法 new int[5][]創(chuàng)建數(shù)組時(shí)壹蔓,必須指定第一個(gè)下標(biāo)。
好啦猫态,今天的文章就到這里佣蓉,希望能幫助到屏幕前迷茫的你們!