一、Java语言基础(4)_方法和数组——数组
2018-04-25
不悔夢(mèng)歸處,只恨未盡心
?
數(shù)組
?
一、一維數(shù)組
?
?
方式1(推薦使用):數(shù)組元素類(lèi)型[] 數(shù)組名稱(chēng); 如:int[] ages; (可以把 int[] 看成一個(gè)整體,看成一種數(shù)據(jù)類(lèi)型,int類(lèi)型的數(shù)組)
方式2:數(shù)組元素類(lèi)型 數(shù)組名稱(chēng)[]; 如:int ages[];
數(shù)組必須初始化才能使用,因?yàn)槌跏蓟硎驹趦?nèi)存存中分配空間。
?
3.數(shù)組的初始化:
數(shù)組是定長(zhǎng)的:一旦初始化完成,數(shù)組的長(zhǎng)度(數(shù)組元素個(gè)數(shù))就固定了,不能改變。如果需要更改,只能重新初始化。
?
?
-
- 靜態(tài)初始化
由程序員為每一個(gè)數(shù)組元素設(shè)置初始值,而數(shù)組的長(zhǎng)度由系統(tǒng)自動(dòng)分配
語(yǔ)法:數(shù)組元素類(lèi)型[] 數(shù)組名 = new?數(shù)組元素類(lèi)型[]{元素1,元素2,元素3,...}; new關(guān)鍵字:在堆空間開(kāi)辟一塊內(nèi)存區(qū)域,用來(lái)存儲(chǔ)數(shù)據(jù)。
舉例:int[] num = new int[]{1,3,5,7,9};
簡(jiǎn)單寫(xiě)法(必須申明的同時(shí)并初始化,不能先聲明后初始化):int[] num = {1,3,5,7,9};
- 動(dòng)態(tài)初始化
由程序員設(shè)置數(shù)組元素個(gè)數(shù)(數(shù)組長(zhǎng)度),而每一個(gè)數(shù)組元素的初始值由系統(tǒng)決定。
語(yǔ)法:數(shù)組元素類(lèi)型[] 數(shù)組名 =?new?數(shù)組元素類(lèi)型[length];
舉例:int[] num = new int[100];
?
4.靜態(tài)初始化內(nèi)存分析
?
5.動(dòng)態(tài)初始化內(nèi)存分析
?
6.數(shù)組的基本操作
-
- 獲取數(shù)組元素
- 獲取數(shù)組元素
元素類(lèi)型 變量 = 數(shù)組名[index]; index表示索引
-
- 設(shè)置元素
數(shù)組名[index] = 值;
-
- 遍歷數(shù)組
建議使用for循環(huán)遍歷
-
- 數(shù)組長(zhǎng)度
int num = 數(shù)組名.length; ?(length是屬性,不是方法)
- 索引范圍
[0,length-1] 從0開(kāi)始,逐一遞增
?
數(shù)組基本操作的代碼:
1 //數(shù)組的基本操作 2 3 class ArrayDemo 4 { 5 public static void main(String[] args){ 6 7 int[] num1 = new int[]{1,3,5,7,9}; 8 9 System.out.println("數(shù)組的長(zhǎng)度=" + num1.length); 10 System.out.println("數(shù)組第一個(gè)元素=" + num1[0]);//獲取數(shù)組元素 11 12 //修改(設(shè)置)num1數(shù)組的第一個(gè)元素 13 num1[0] = 100; 14 System.out.println("數(shù)組第一個(gè)元素=" + num1[0]);//獲取數(shù)組元素 15 16 System.out.println("----------------------------"); 17 18 //遍歷數(shù)組 19 System.out.println("數(shù)組第一個(gè)元素=" + num1[0]); 20 System.out.println("數(shù)組第二個(gè)元素=" + num1[1]); 21 System.out.println("數(shù)組第三個(gè)元素=" + num1[2]); 22 System.out.println("數(shù)組第四個(gè)元素=" + num1[3]); 23 System.out.println("數(shù)組第五個(gè)元素=" + num1[4]); 24 25 System.out.println("----------------------------"); 26 27 //使用for循環(huán)遍歷數(shù)組 28 for(int index = 0; index < num1.length; index++){ 29 System.out.println(num1[index]); 30 } 31 } 32 }?
輸出結(jié)果:
7.?操作數(shù)組常見(jiàn)異常
-
- NullPointerException:空指針異常(空引用異常)
當(dāng)數(shù)組沒(méi)有初始化,就直接操作數(shù)組,就會(huì)出現(xiàn)空指針異常
如: int[] bs = null;
System.out.println(bs.length); ?
-
- ArrayIndexOutOfBoundsException:數(shù)組的索引越界異常
如: int[] a?= {100};
System.out.println(a[-1]);
?
8.獲取數(shù)組最大和最小元素
輸出結(jié)果:10
1 class ArrayDemo2 2 { 3 4 //獲取數(shù)組最大元素 5 public static int getMax(int[] num){ 6 int max = num[0];//假設(shè)第一個(gè)元素是最大值 7 for(int index = 1; index < num.length; index++){ 8 if(num[index] > max){ 9 max = num[index]; //把最大值存儲(chǔ)在max變量里 10 } 11 } 12 return max; 13 14 } 15 16 public static void main(String[] args) 17 { 18 19 int[] num = new int[]{-3,0,2,1,10}; 20 21 int max = ArrayDemo2.getMax(num); 22 System.out.println(max); 23 } 24 }?
9.按格式打印數(shù)組元素
?
1 class ArrayDemo2 2 { 3 4 5 6 public static void main(String[] args) 7 { 8 9 10 String[] arr = {"A","B","C","D","E"}; 11 ArrayDemo2.printArrary(arr); 12 } 13 static void printArrary(String[] arr){ 14 //如果數(shù)組為空,則輸出null 15 if(arr == null){ 16 System.out.println("null"); 17 return; //結(jié)束方法 18 } 19 20 String ret = "["; 21 //遍歷數(shù)組 22 for(int index = 0; index < arr.length; index++){ 23 ret = ret + arr[index]; 24 //如果當(dāng)前index不是最后一個(gè)索引,則拼接“,” 25 if(index != arr.length-1){ 26 ret = ret + ", "; 27 } 28 } 29 ret = ret + "]"; 30 31 System.out.println(ret); 32 } 33 }?
?
輸出結(jié)果:
?
10.逆序排列數(shù)組元素
?
1 class ArrayDemo2 2 { 3 4 public static void main(String[] args) 5 { 6 String[] arr = {"A","B","C","D","E"}; 7 ArrayDemo2.printArrary(arr); 8 String[] newArr = ArrayDemo2.reverse(arr); 9 ArrayDemo2.printArrary(newArr); 10 } 11 static void printArrary(String[] arr){ 12 //如果數(shù)組為空,則輸出null 13 if(arr == null){ 14 System.out.println("null"); 15 return; //結(jié)束方法 16 } 17 18 String ret = "["; 19 //遍歷數(shù)組 20 for(int index = 0; index < arr.length; index++){ 21 ret = ret + arr[index]; 22 //如果當(dāng)前index不是最后一個(gè)索引,則拼接“,” 23 if(index != arr.length-1){ 24 ret = ret + ", "; 25 } 26 } 27 ret = ret + "]"; 28 29 System.out.println(ret); 30 } 31 32 static String[] reverse(String[] oldArr){ 33 34 //創(chuàng)建一個(gè)新數(shù)組,用來(lái)存放就數(shù)組逆序之后的元素 35 String[] newArr = new String[oldArr.length]; 36 for(int index = oldArr.length-1; index >= 0; index--){ 37 newArr[oldArr.length-1-index] = oldArr[index]; 38 } 39 return newArr; 40 } 41 }?
?輸出結(jié)果:
?
?
? 11.元素出現(xiàn)索引(線(xiàn)性搜索)
?
class ArraySearchDemo {public static void main(String[] args) {int[] arr = {10,20,30,10,50,-30,10};int beginIndex = ArraySearchDemo.indexOf(arr,10);System.out.println(beginIndex);int endIndex = ArraySearchDemo.lastIndexOf(arr,10);System.out.println(endIndex);}/*查詢(xún)key元素在arr數(shù)組中第一次出現(xiàn)的位置參數(shù):arr:從哪一個(gè)數(shù)組中去做查詢(xún)key:當(dāng)前去查詢(xún)的元素返回:如果key存在于arr數(shù)組中,則返回第一次出現(xiàn)的索引如果key不存在于arr數(shù)組中,則返回-1*/static int indexOf(int[] arr,int key){for(int index = 0; index < arr.length; index++){if(arr[index] == key){return index;}}return -1;}//獲取key參數(shù)在arr數(shù)組中最后出現(xiàn)的索引位置static int lastIndexOf(int[] arr,int key){for(int index = arr.length-1; index >= 0; index--){if(arr[index] == key){return index;}}return -1;} }?
?
?
?
輸出結(jié)果:
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/sunNoI/p/8942465.html
總結(jié)
以上是生活随笔為你收集整理的一、Java语言基础(4)_方法和数组——数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS2005精简版(二)
- 下一篇: java美元兑换,(Java实现) 美元