Java数组参考_Java数组
數組變量 VS 數組對象
先看一例子:
int[] primitiveArray; //在棧中聲明了一個引用變量,暫時還沒指向任何對象
primitiveArray = new int[5]; //在堆中創建了一個數組對象,并將這個對象的引用復制給primitiveArray。這個數組對象中的每個數組元素的類型都是int類型,并且此時每個數組元素的值都為0。//------------------分割線---------------
int[] primitiveArray2 = {2,3,4,5,6};//在棧中聲明了一個名為primitiveArray2 的引用變量,同時在堆中創建了一個數組對象,primitiveArray2指向該對象。該數組對象的各個數組元素的值分別為2,3,4,5,6
數組變量(數組名、數組標識符):分配在棧空間,引用類型,比如上例中的primitiveArray和primitiveArray2,指向在堆中創建的一個真實對象(數組對象)。
數組對象:分配在堆空間,是一個對象,由一系列固定數量的數組元素(element)組成,數組元素的個數在創建數組對象時確定。每個數組元素可以存放基本數據類型的值,或者是指向其他類型的引用,這取決于數組類型。
對象數組 VS 基本類型數組
上述例子中創建的是基本基本類型的數組,也可以創建對象數組,比如:
Student[] objectArray; //在棧中聲明了一個引用變量,暫時還沒指向任何對象
objectArray= new Student[5]; //在堆中創建了一個數組對象,并將這個對象的引用賦值給objectArray。這個數組對象中的每個數組元素的類型都是Student類型(引用類型),并且此時每個數組元素的值都為null。//------------------分割線---------------
Student[] objectArray2= {new Student("zhangsan"),new Student("lisi"),new Student("wangwu")};//在棧中聲明了一個名為objectArray2的引用變量,同時在堆中創建了一個數組對象,objectArray2指向該對象。另外還在堆中創建了三個Student對象,該數組對象中的三個數組元素分別指向了這三個Student對象。
1.在使用上幾乎是相同的;
2.唯一的區別就是對象數組保存的是引用,基本類型數組直接保存基本類型的值。
數組類型是一種引用類型
比如int是一個基本類型,但是int[]就是一種引用類型了。為什么這么說呢?
因為int a = 32;
變量a在棧空間,其存儲的值為32;
而int[] b = {32};
變量b在棧空間,其存儲的值是堆空間中的某個地址值了。既然b中存儲的是地址,那么b就是引用類型的變量了。
什么是Java中的對象呢?
在java中如何創建一個對象呢?一般是new Class,這樣就會在堆空間中創建出一個對象了。那么Java數組是一個對象嗎?如果是對象,那它是哪個類的實例呢?
事實上,java中數組也是一個對象。因為java數組存在于堆空間,所以它就是一個對象,既然它是一個對象,那么它是哪個類的實例呢?
Student student = newStudent();
System.out.println(student.getClass().getCanonicalName());//輸出結果:Student
Student[] objectArray= new Student[5];
System.out.println(objectArray.getClass().getCanonicalName());//輸出結果:Student[]
Student[][] objectArray2= new Student[5][];
System.out.println(objectArray2.getClass().getCanonicalName());//輸出結果:Student[][]
Student[][][] objectArray3= new Student[5][][];
System.out.println(objectArray3.getClass().getCanonicalName());//輸出結果:Student[][][]
所以,數組類型可以看做一個特殊的Class類。
ClassName reference = new ClassName(); //普通類的使用方式,這里這是創建了一個對象,棧空間中的引用指向該對象,對象中的各個域進行了默認的初始化,可能還需要重新設置值。
Type[] refrence = new Type[length]; //使數組的方式,創建了一個數組對象,棧空間中的引用指向該對象,數組對象中的各個數組元素進行了默認的初始化,還需要重新給各個元素復制。
所以有的書中,將java中的對象分為:(類的)實例對象和數組對象。
參考資料
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java数组参考_Java数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全军出击简单透视
- 下一篇: java美元兑换,(Java实现) 美元