樂觀學習,樂觀生活,才能不斷前進啊!!!
我的主頁:optimistic_chen
我的專欄:c語言
歡迎大家訪問~
創作不易,大佬們點贊鼓勵下吧~
前言
無論c語言還是java數組都是重中之重,今天我們來學習java數組,看他與C語言中有幾分不同。
文章目錄
- 前言
- 數組的創建
- 初始化
- 數組的使用
- 數組的本質
- 數組應用
- 參數傳基本數據類型
- 參數傳輸組類型(引用數據類型)
- 引用變量
- 完結
數組的創建
Type[ ] 數組名=new Type[N]
例如:
int[] array=new int[10];
double[] array2=new double[10];
String[] array3=new String[10];
初始化
動態初始化:在創建數組時,直接指定數組中元素的個數
int[] array=new int[10];
靜態初始化:在創建數組時不直接指定數據元素的個數,而直接將具體的數據內容進行指定
Type[] 數組名={data1,data2,...,datan};int[] array={1,2,3,4,6};
注意:
·靜態初始化雖然沒有指定數組的長度,編譯器在編譯時會根據{}中元素個數來確定數組的長度。
·靜態初始化時, {}中數據類型必須與[]前數據類型一致。
·靜態初始化可以簡寫,省去后面的new Type[ ]。
·如果沒有對數組初始化,數組中元素為默認值。
·如果·數組中儲存元素的類型為引用類型,默認值為NULL
類型 | 默認值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0f |
double | 0.0 |
char | 0 |
boolean | false |
數組的使用
因為在C語言中我們接觸過數組,所以對于基本的數組訪問和遍歷我們不再說明,相信大家都了解過很多。我們直接從兩者不同的地方開始說起。
C語言中求數組長度時使用sizeof關鍵詞,但是在Java中數組長度可以通過數組對象.length來獲取
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){System.out.println(array[i]);
}
當然,遍歷數組也有一個新方式,for-each循環,語法格式如下:
for(數據類型 變量:集合名稱){
代碼塊;
}
int[] array = { 100, 200, 300, 400, 500 };for (int x : array) {System.out.print(x+",");}
雖然foreach是for循環的增強版,簡化了編程,提高了代碼的可讀性和安全性,避免了數組越界。而foreach一般是結合泛型使用,在需要使用數組或者集合索引時,for-each就不好用了。
數組的本質
之前博客初始Java中說過Java中的基本類型變量,指的是該變量空間中直接存放的是其所對應的值。而Java的數組是引用類型。指引用數據類型創建的變量,一般稱為對象的引用,其空間中儲存的是對象所在空間的地址
public static void func() {int a = 10;int b = 20;int[] array = new int[]{1,2,3};
}
array是數組類型的引用變量,其內部保存的內容可以簡單理解成是數組在堆空間中的首地址(有點類似C語言中的指針)。
數組應用
參數傳基本數據類型
public static void main(String[] args) {int num = 0;func(num);System.out.println("num = " + num);
}
public static void func(int x) {x = 10;System.out.println("x = " + x);
}
執行結果
發現在func方法中修改形參 x 的值, 不影響實參的 num 值.
參數傳輸組類型(引用數據類型)
public static void main(String[] args) {int[] arr = {1, 2, 3};func(arr);System.out.println("arr[0] = " + arr[0]);
}
public static void func(int[] a) {a[0] = 10;System.out.println("a[0] = " + a[0]);
}
執行結果
發現在func方法內部修改數組的內容, 方法外部的數組內容也發生改變.
因為數組是引用類型,按照引用類型來進行傳遞,是可以修改其中存放的內容的。
引用變量
public static void main(String[] args){int[] array={1,2,3,4};System.out.println(array);int a=10;
}
我們知道數組是引用類型,那么數組名應該為引用變量。既然是引用變量,那就說明存的是一個地址,那個地址的指向才是數組中真正存的東西。也就是說引用變量指向一個對象,即:array這個引用指向一個數組對象。
array[0]=1;//通過array這個引用,訪問當前對象的0下標
array.length//通過array這個引用,訪問當前對象的長度
示例:
public static void main(String[] args) {int[] array1=new int[3];array1[0]=10;array1[1]=20;array1[2]=30;int[] array2=new int[]{1,2,3,4,5};array2[0]=100;array2[1]=200;array1=array2;//array1這個引用指向array2這個引用指向的對象array1[2]=300;array1[3]=400;array2[4]=500;for (int i = 0; i < array2.length; i++) {System.out.println(array2[i]);}}
當兩個引用同時指向一個對象的時候,通過任何一個引用都能修改這個對象的值,并且如果一個對象如果一直沒有人引用,那么JVM自動回收。
注意:一個引用不可能同時指向兩個對象
完結
好了,這期的分享到這里就結束了~
如果這篇博客對你有幫助的話,可以點一個免費的贊并收藏起來喲~
可以點點關注,避免找不到我~
我們下期不見不散~~
下期預告:java—類與對象