標籤:
由於Java數組涵蓋的內容比較多,這裡從個人的角度對主要的內容進行相關的講解。
如有不足,歡迎批評指正~
1)Java數組是動態還是靜態啊?
Java語言是典型的靜態語言,由此推斷Java數組也是靜態。何為靜態,就是說Java數組在初始化的時候必須確定在記憶體中分配的空間的大小。
具體實現方式就是在初始化數組的時候(注意不是聲明數組的時候,這兩個概念別搞混了)指定數組的長度,或者指定初始化數組的內容哦。
同時需要明白陣列變數並不是數組本身,陣列變數是儲存在棧中的,對應的數組對象是儲存在堆中的。棧中的陣列變數指向堆中的數組對象。
例如:
package com.yonyou.test;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 測試類別 * @author 小浩 * @建立日期 2015-3-2 */public class Test{ public static void main(String[] args) { int[] array=new int[10];//初始化數組的時候指定類數組的長度 int[] array_new=new int[]{1,2,3};//初始化數組的時候指定了對應的相關元素 //需要注意的是這裡不能再指定對應的長度了哦 //否則的話會報錯的哦。 System.out.println("數組一的長度為:"+array.length); System.out.println("數組二的長度為:"+array_new.length); }}
2)Java數組的預設初始化值
a.基礎資料型別 (Elementary Data Type)byte,short,int,long,預設的初始化值為0;
b.基礎資料型別 (Elementary Data Type)float,double的預設初始值為0.0
c.基礎資料型別 (Elementary Data Type)char的預設初始值為:\0000
d.基本參考型別的預設初始值為null
package com.yonyou.test;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 測試類別 * @author 小浩 * @建立日期 2015-3-2 */public class Test{ public static void main(String[] args) { short[] array_0=new short[10]; int[] array_1=new int[10]; long[] array_2=new long[10]; byte[] array_3=new byte[10]; char[] array_4=new char[10]; boolean[] array_5=new boolean[10]; float[] array_6=new float[10]; double[] array_7=new double[10]; Car[] array_8=new Car[10]; System.out.println("short:"+array_0[5]); System.out.println("int: "+array_1[5]); System.out.println("long: "+array_2[5]); System.out.println("byte: "+array_3[5]); System.out.println("char的預設值是否為\\u0000:"+(array_4[5]==‘\u0000‘));//無法直接顯示字元的內容 //間接的顯示 System.out.println("boolean: "+array_5[5]); System.out.println("float : "+array_6[5]); System.out.println("double: "+array_7[5]); System.out.println("引用類變數初始化值為:: "+array_8[5]); } /** * 建立一個測試對象 * @author 小浩 * @建立日期 2015-3-19 */ class Car{ }}
3)Java數組一定要初始化嗎?
不是的。對於具體的反例,請看下面的內容:
package com.yonyou.test;/** * 測試類別 * @author 小浩 * @建立日期 2015-3-2 */public class Test{ public static void main(String[] args) { Car[] car1=new Car[10]; Car[] car2; car2=car1; System.out.println(car2.length); } /** * 建立一個測試對象 * @author 小浩 * @建立日期 2015-3-19 */ class Car{ }}
4)Java數組初始化的幾種方式?
數組的初始化一般分為兩種:
一種為靜態初始化:
在建立數組的時候就指定了數組的長度,如下面的內容:
int[] array_static=new int[]{1,2,3};
第二種為動態初始化:
在建立數組的時候僅僅指定數組的長度
int[] array_dynamic=new int[10];
具體應用執行個體如下:
package com.yonyou.test;/** * 測試類別 * @author 小浩 * @建立日期 2015-3-2 */public class Test{ public static void main(String[] args) { //靜態初始化 int[] array_static=new int[]{1,2,3}; //動態初始化 int[] array_dynamic=new int[10]; }
4)Java中的多維陣列是怎麼回事?
說句到家的話,java中沒有多維陣列的概念。java中的多維陣列可以當成一維數組來處理。初始化多維陣列的時候可以轉換成對應的一維數組。
只不過這時一維數組中儲存的不在是具體的元素值,而是對應的數組的引用地址。具體的也不多說了,請看下面的例子:
package com.yonyou.test;/** * 測試類別 * @author 小浩 * @建立日期 2015-3-2 */public class Test{ public static void main(String[] args) { Object[] obj1=new Object[4]; obj1[2]=new Object[2]; Object[] obj2=(Object[]) obj1[2]; obj2[1]=new Object[3]; Object[] obj3=(Object[]) obj2[1]; obj3[2]=new int[5]; int[] obj4=(int[]) obj3[2]; obj4[3]=100; System.out.println(obj4); System.out.println( ((int[])((Object[])((Object[])obj1[2])[1])[2]) ); System.out.println(obj4[3]); System.out.println(((int[])((Object[])((Object[])obj1[2])[1])[2])[3]); }}
好吧,就先到這裡吧。
Java數組的基本講解