數組定義及初始化
數組這玩意是一種用於存放數據最常見數據結構。
數組的的概念及注意點
- 數組要求所有的數組元素具有相同的數據類型,且只能存在一種數據類型,要多專一有多專一。
- 數據類型既可以是基本類型也可以是引用類型,類里雖然有不同對象,但都屬於同一類,也可存於數組。
- 數組就是一種引用類型。
- 數組一旦初始化完成,長度就已經確定,所占內存空間也被固定且不能改變,把數據刪除也沒用。
數組的定義
// 定義數組
char[] initArrays;
char initArrays1[];
- 兩者都可以定義一個數組,但建議使用第一種,也就是
type[] arrayname
,因為具有較好的可讀性,讓人一看就知道是個char[]類型的。 - 僅僅定義了一個引用對象,且並沒有指向任何的內存,所以暫時是不能使用的,需要對它初始化!
數組的初始化
形式
- 靜態初始化
//靜態初始化
char[] initArrays0;
initArrays0 = new char[]{'1','2'};
//char[] initArrays0= {'1','2'};
靜態初始化需要人為顯式指定每個數組元素的初始值,由系統決定數組長度。
type[] arrayname={element1,element2...};
是上面兩條語句的對於數組靜態初始化的簡化語法格式。
注意:數組元素由花括號擴起,且由逗號分隔。
- 動態初始化
//動態初始化
int[] arrays;
arrays = new int[3];
//int[] arrays = new int[3];
動態初始化是人為指定數組長度,由系統為數組元素分配初始值。
同樣,動態初始化也有簡化格式:type []arrayname = new int[length];
。
注意:方括號內需指定數組的長度。
一旦為數組的每個元素數組分配了內存空間,每個內存空間里存儲的內容就是該元素的值,即使內容為空,也是null值,所以不論哪種方式初始化數組,都會使數組元素獲得初始值。只不過初始值的獲得的方式不一樣罷了,一個是人給的,一個是系統給的。
動態分配的初始值
既然動態初始化數組只需要指定每個元素所需的內存空間,由系統為各個元素賦初值,那么,這些初值系統又是如何來賦予的呢。以下是對各個不同類型的數組賦初值的嘗試:
int[] arrays = new int[3];
boolean[] arrays1 = new boolean[3];
String[] arrays2 = new String[3];
float[] arrays3 = new float[3];
char[] arrays4 = new char[3];
System.out.println(arrays[0]);//0
System.out.println(arrays1[0]);//false
System.out.println(arrays2[0]);//null
System.out.println(arrays3[0]);//0.0
System.out.println(arrays4[0]);//輸出'\u0000'為空
}
再根據查找資料,做出總結:
- 整數類型(byte,short,int,long)->0;
- 浮點類型(float,double)->0.0;
- 字符類型(char) →'\u0000';
- 布爾類型(boolean) →false;
- 引用類型(類,接口,數組)->null;
通向Java深入:Java數組深入理解
小tips:關於輸出'\u0000'為空引發的思考:Java 中各種空(""、\u0000、null)的區別?