Java創建數組的幾種方式
1、一維數組的聲明方式:
type[] arrayName; 或 type arrayName[];
附:推薦使用第一種格式,因為第一種格式具有更好的可讀性,表示type[]是一種引用類型(數組)而不是type類型。建議不要使用第二種方式
下面是典型的聲明數組的方式:
// 聲明整型數組
int[] intArray0 ;
int intArray1 [];
// 聲明浮點型數組
float floatArray0 [];
float[] floatArray1 ;
// 聲明布爾型數組
boolean boolArray0 [];
boolean[] boolArray1 ;
// 聲明字符型數組
char charArray0 [];
char[] charArray1 ;
// 聲明字符串數組
String stringArray0[];
String[] stringArray1;
// 錯誤的聲明數組的方式,聲明數組的時候不能指定其大小
// int [5] intErrorArray0;
// int intErrorArray1[5];
注:Java語言中聲明數組時不能指定其長度(數組中元素的個數),這是因為數組是一種引用類型的變量,因此使用它定義一個變量時,僅僅表示定義了一個引用變量(也就是定一個了一個指針),這個引用變量還未指向任何有效的內存,所以定義數組時不能指定數組的長度。而且由于定義數組僅僅只是定一個引用變量,并未指向任何有效的內存空間,所以還沒有內存空間來存儲數組元素,因此這個數組也不能使用,只有在數組進行初始化后才可以使用。
2、一維數組的創建
Java中使用關鍵字new創建數組對象,格式為:數組名 = new 數組元素的類型 [數組元素的個數]
// 創建數組,如果在創建的同時不初始化數組則必須指定其大小
intArray0 = new int[3];
// 錯誤的創建數組的方式,如果創建數組時不指定大小則必須初始化
// intArray1 = new int[];
// 創建數組時,不指定數組大小則必須在創建的同時初始化數組
intArray1 = new int[]{0,1,2};
使用new創建數組對象但是分配數組時會自動為數組分配默認值,具體如下:
System.out.println( “intArray0[0]=” + intArray0 [0]);
floatArray0 = new float[3];
System. out.println(“floatArray0[0]=” + floatArray0[0]);
boolArray0 = new boolean[3];
System. out.println(“boolArray0[0]=” + boolArray0[0]);
charArray0 = new char[3];
System. out.println(“charArray0[0]=” + charArray0[0]);
stringArray0 = new String[3];
System. out.println(“stringArray0[0]=” + stringArray0[0]);
輸出如下:
intArray0[0]=0
floatArray0[0]=0.0
boolArray0[0]=false
charArray0[0]=
stringArray0[0]=null
附:一旦使用new關鍵字為數組分配了內存空間,每個內存空間存儲的內容就是數組元素的值,也就是數組元素就有了初始值,即使這個內存空間存儲的內容是空,這個空也是一個值null。也就是說不可能只分配內容空間而不賦初始值,即使自己在創建數組對象(分配內容空間)時沒有指定初始值,系統也會自動為其分配
附:諸如基礎數據類型的包裝類,其默認的初始化值均為null,因為基礎數據類型的包裝類創建的數組屬于引用數組(對象數組),對象數組默認的初始化值都是null
3、一維數組的初始化
數組的初始化分為靜態初始化、動態初始化和默認初始化:
靜態初始化是數組在初始化時由程序員顯式指定每個數組元素的初始值而數組長度由系統決定。
動態初始化是數組在初始化時只指定數組長度,由系統為數組元素分配初始值。
a、數組靜態初始化的語法格式:
arrayName = new type[]{element1,element2,element3.。.}或者使用簡化的語法格式:arrayName = {element1,element2,element3.。.}
b、數組動態初始化的語法格式:
arrayName = new type[length];
附:靜態初始化時不能指定元素個數,而動態初始化時則必須指定元素個數。靜態初始化時數組能夠知道元素的個數所以不需要指定,而動態初始化時數組元素個數未知因此必須指定。
// 靜態初始化
int intArray2 [] = new int[]{20,21,22};
// 靜態初始化簡化方式
int intArray3 [] = {30,31,32};
// 動態初始化
int[] intArray4 = new int[3];
// 錯誤寫法:靜態初始化不能指定元素個數
// int intErrorArray5[] = new int[3]{50,51,52};
// 錯誤寫法:動態初始化必須指定元素個數
// int intErrorArray6[] = new int[];
注:一維數組這一塊記住兩點,數組聲明的時候是不能指定大小的,也就是說等號左邊的中括號中不能包含數字。另外一旦使用new關鍵字那么肯定在內存中為數組分配了空間,則必然數組有默認值。數組是對象數據類型
注:不要靜態初始化和動態初始化同時使用,也就是說不要再進行數組初始化時,既指定數組長度,也為每個數組元素分配初始值。
4、數組進行動態初始化時系統分配初始值的規則
數組元素類型是基本類型中的整數類型(byte、short、int、long),則數組元素的值是0
數組元素類型是基本類型中的浮點類型(float、double),則數組元素的值是0.0
數組元素類型是基本類型中的字符類型(char),則數組元素的值是‘u0000’
數組元素類型是基本類型中的布爾類型(boolean),則數組元素的值是false
數組元素類型是基本類型中的引用類型(類、接口、數組),則數組元素的值是null
附:這部分源代碼:
package javabase;
public class CreateArray {
public static void main(String args[]){
/**************數組的聲明*******************/
// 聲明整型數組
int[] intArray0 ;
int intArray1 [];
// 聲明浮點型數組
float floatArray0 [];
float[] floatArray1 ;
// 聲明布爾型數組
boolean boolArray0 [];
boolean[] boolArray1 ;
// 聲明字符型數組
char charArray0 [];
char[] charArray1 ;
// 聲明字符串數組
String stringArray0[];
String[] stringArray1;
// 錯誤的聲明數組的方式,聲明數組的時候不能指定其大小
// int [5] intErrorArray0;
// int intErrorArray1[5];
/*********************數組的創建***********************/
// 創建數組,如果在創建的同時不初始化數組則必須指定其大小
intArray0 = new int[3];
// 錯誤的創建數組的方式,如果創建數組時不指定大小則必須初始化
// intArray1 = new int[];
// 創建數組時,不指定數組大小則必須在創建的同時初始化數組
intArray1 = new int[]{0,1,2};
System. out.println(“intArray0[0]=” + intArray0[0]);
floatArray0 = new float[3];
System. out.println(“floatArray0[0]=” + floatArray0[0]);
boolArray0 = new boolean[3];
System. out.println(“boolArray0[0]=” + boolArray0[0]);
charArray0 = new char[3];
System. out.println(“charArray0[0]=” + charArray0[0]);
stringArray0 = new String[3];
System. out.println(“stringArray0[0]=” + stringArray0[0]);
/**********************數組的初始化*************************/
// 靜態初始化
int intArray2 [] = new int[]{20,21,22};
// 靜態初始化簡化方式
int intArray3 [] = {30,31,32};
// 動態初始化
int[] intArray4 = new int[3];
// 錯誤寫法:靜態初始化不能指定元素個數
// int intErrorArray5[] = new int[3]{50,51,52};
// 錯誤寫法:動態初始化必須指定元素個數
// int intErrorArray6[] = new int[];
System. out.println(“intArray2[0]=” +intArray2 [0]);
System. out.println(“intArray3[0]=” +intArray3 [0]);
System. out.println(“intArray4[0]=” +intArray4 [0]);
}
}
java 創建數組的三種方式的區別
他們的區別,方式一:在聲明的時候直接就已經分配空間,并賦值,方式一是不能寫成如下這種形式的。
int[] arr1;
arr1 = {1,2,3};//錯誤寫法 編譯不同過
方式二和方式三,聲明和內存分配是分開的,如上面的例子,
int[] arr2; 和 int[] arr3;
這一步是在棧空間分配一個引用,存放的是一個引用,null
arr2 = new int[]{1,2,3};
arr3 = new int[3];
到這一步的時候jvm才開始在內存堆區域分配空間,并賦值,方式二直接賦值 1,2,3 方式三 默認初始化,基本類型是 0 布爾類型是 false 引用類型為null,
注:內存一旦分配不能改變,所有說數組長度固定
評論
查看更多