6-Java基礎語法-陣列之一維陣列
陣列
為什麼要使用陣列?
學生成績排序問題
如果沒有陣列,我們得定義30個變數。
陣列是相同型別的資料按順序組成的一種引用資料型別
要學習的內容:
一維陣列: 宣告 建立 初始化 元素的引用 長度 陣列的應用
陣列的概念
陣列宣告語法格式:
資料型別[] 陣列名; 資料型別 陣列名[]; //和c等一致的形式int[] myIntArray;int myIntArray[];char[] ch; String[] strArray;//字串是一個類,這是物件陣列。
變數宣告的語法格式:
資料型別 變數名;
資料型別後加上了中括號。命名規範上第一個單詞首字母小寫,之後單詞首字母大寫。
陣列的建立:
語法格式一:先宣告後建立
資料型別[] 陣列名; 陣列名 = new 資料型別[陣列長度]; // new是在建立一個物件,這裡是建立一個陣列int[] arr; arr= new int[10]; // 建立一個長度為10的整型陣列
語法格式二:宣告的同時建立陣列
資料型別[] 陣列名= new 資料型別[陣列長度];int[] arr= new int[10]; // 建立長度為10的整型陣列arr
注意:陣列建立時長度必須指定
陣列在記憶體中的儲存
陣列會被分配連續的記憶體空間
int[] a=new int[5];
預設值都為0。陣列名是一個物件,指向陣列中的第一個元素。
區域性變數和陣列的預設值問題: 區域性變數是沒有預設值的,如果沒有初始化,是記憶體中的隨機值。而陣列是有預設值的0的,因為陣列本身是物件。
陣列的初始化: 宣告陣列的同時給陣列賦值,叫做陣列的初始化。
例子:
int[] arr={1,2,3,4,5,6,7,8,9,10};
陣列的長度就是初始化時所給陣列元素的個數
陣列元素的引用
語法格式:
陣列名[下標];
注意:下標從0開始
int[] arr={1,2,3,4,5,6,7,8,9,10};
連續的記憶體空間當中儲存陣列的值
變數名 和 變數值的關係
陣列的長度:
int[] arr={1,2,3,4,5,6,7,8,9,10};// 屬性length表示陣列的長度,如a.length
一維陣列的應用
package cn.mtianyan.array;public class ArrayDemo { public static void main(String[] args) { // 宣告陣列 int[] intArray; String strArray[]; // 建立陣列 intArray = new int[5]; strArray = new String[10]; // 宣告陣列的同時進行建立 float[] floatArray = new float[4]; // 初始化陣列 char[] ch = {'a','b','c','d'}; System.out.println("ch陣列的長度為: "+ch.length); // 陣列預設值 char[] charArray = new char[5]; System.out.println("intArray陣列的第二個元素為: "+intArray[1]); System.out.println("strArray陣列的第五個元素為: "+strArray[4]); System.out.println("floatArray的最後一個元素為:"+floatArray[floatArray.length-1]); System.out.println("charArray的第一個元素為: "+charArray[0]+"End"); } }
所有物件陣列都像strArray一樣在建立時預設值為null;使用迴圈對整型陣列賦值。
// 迴圈為整型陣列賦值 for (int i=0;i<5;i++){ intArray[i] = i+1; } System.out.println("整型陣列intArray的元素為: "); for (int i=0;i<5;i++){ System.out.print(intArray[i]+" "); }
陣列下標越界,會報出異常。ArrayIndexOutOfBoundsException(執行時異常) 陣列下標越界異常。
求陣列元素的累加和
定義一個整型陣列,從鍵盤接收輸入值,然後求累加和。
package cn.mtianyan.array;import java.util.Scanner;public class ArrayAddDemo { public static void main(String[] args) { int[] intArray = new int[5]; System.out.println("請輸入五個陣列的元素,輸入0為計算前面幾個輸入值,只輸入0退出程式:"); Scanner scanner = new Scanner(System.in); int sum=0; while (true) { sum = 0; for (int i = 0; i < 5; i++) { intArray[i] = scanner.nextInt(); if (intArray[i] == 0) break; sum = sum + intArray[i]; } if (sum==0) break; System.out.println("sum:" + sum); } } }
package cn.mtianyan.array;import java.util.Scanner;public class ArrayDemo1 { public static void main(String[] args) { int[] a = new int[5]; Scanner scanner = new Scanner(System.in); for (int i=0;i<a.length;i++){ System.out.print("請輸入第"+(i+1)+"個元素: "); a[i] = scanner.nextInt(); } System.out.println(); System.out.println("陣列元素的內容為: "); for (int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
int sum=0; for (int i=0;i<a.length;i++){ sum +=a[i]; } System.out.println("陣列累加和為: "+sum);
程式設計練習
求陣列中能被3整除的元素並列印輸出。
效果圖:
任務:
定義一個整型陣列a並初始化
迴圈遍歷陣列,找出能被3整除的元素並列印輸出
package cn.mtianyan.array;public class ArrayExercise { public static void main(String[] args) { int[] a ={1,2,6,12,15,16,17}; System.out.println("能被3整除的陣列元素為:"); for (int i=0;i<a.length;i++){ if (a[i] % 3==0){ System.out.println(a[i]); } } } }
求陣列元素的最大值
package cn.mtianyan.array;public class ArrayMaxDemo { public static void main(String[] args) { // 求陣列元素最大值 int[] a ={1,2,6,12,35,16,17}; int max = 0; for (int i=0;i<a.length;i++){ if(a[i]>max){ max = a[i]; } } System.out.println("max:" +max); } }
最佳化: max 之間等於a[0] 然後迴圈就可以從1開始了,少了一次比較。
public static void main(String[] args) { // 求陣列元素最大值 int[] a ={34,23,78,56,31}; int max = a[0]; for (int i=1;i<a.length;i++){ if(a[i]>max){ max = a[i]; } } System.out.println("max:" +max); }
增強型for迴圈
和陣列結合起來使用會更加方便
又叫foreach迴圈, foreach迴圈應用:
System.out.println(); System.out.println("使用foreach輸出陣列內容:"); for (int n:a) { System.out.print(n+" "); }
如何對變數a,b的值進行交換
int a=3,b=5;int temp; temp=a;a=b;b=temp;
氣泡排序
對一組整數按照由小到大的順序進行排序。
假設存放著這樣一組整數,如何將它們從小到大進行排序。
對陣列中元素從頭到位對相鄰的元素進行大小比較。
過程: 對34和53進行比較,發現34和53相比,53大的在右邊是正常的,什麼都不用做,12和53相比發現53是大的,53向上浮一位。53和32進行比較,53比32大,再次上浮。52和56比,很正常。然後56和17比,56上浮。
這就是氣泡排序.
package cn.mtianyan.array;public class SortDemo { public static void main(String[] args) { // 氣泡排序 int[] a ={34,53,12,32,56,17}; System.out.println("排序前的陣列元素為: "); for (int n:a){ System.out.print(n+" "); } System.out.println(); int temp; // 外層控制趟,內層冒泡 for(int i=0;i<a.length-1;i++){ // 內層迴圈控制每趟排序,越到後邊的趟,需要排的越少。 for (int j=0;j<a.length-1-i;j++){ // 前一個數大於後一個數,交換位置 if(a[j] > a[j+1]){ temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } System.out.println("從小到大排序排序後的陣列元素為: "); for (int n:a) { System.out.print(n+" "); } } }
執行結果:
package cn.mtianyan.array;public class SortReverseDemo { public static void main(String[] args) { // 氣泡排序 int[] a ={34,53,12,32,56,17}; System.out.println("排序前的陣列元素為: "); for (int n:a){ System.out.print(n+" "); } System.out.println(); for (int i=0;i<a.length-1;i++){ for (int j=0;j<a.length-1-i;j++){ if(a[j] < a[j+1]){ int temp = 0; temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } System.out.println("從大到小排序後的陣列元素為: "); for (int n:a){ System.out.print(n+" "); } } }
執行結果:
作者:天涯明月笙
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1600/viewspace-2818704/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaSE基礎語法3-陣列Java陣列
- scala語法 -多維陣列陣列
- JAVA基礎--二維陣列Java陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- 《Java從入門到失業》第三章:基礎語法及基本程式結構(3.9):陣列(陣列基本使用、陣列的迴圈、陣列拷貝、陣列排序、多維陣列)Java陣列排序
- Go基礎語法0x01-陣列Go陣列
- C語言基礎-1、陣列C語言陣列
- 陣列基礎使用陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- 第四章:多維陣列和矩陣 --------------- 4.1 基礎題:順時針列印二維陣列陣列矩陣
- PHP中二維陣列與多維陣列PHP陣列
- 指標陣列和陣列指標與二維陣列指標陣列
- JavaScript基礎(五)陣列JavaScript陣列
- JavaScript基礎——使用陣列JavaScript陣列
- 樹狀陣列基礎陣列
- golang基礎之陣列Golang陣列
- Java基礎(四)——switch語句、一維陣列、二維陣列的定義、儲存、遍歷、常見問題Java陣列
- Go 語言基礎 陣列、切片、對映Go陣列
- 【Python】python 基礎語法之列表、n維陣列的變換(取反(逆序)\切片等)Python陣列
- 二維陣列和稀疏陣列互轉陣列
- 陣列004 動態建立一維陣列陣列
- c語言中三維陣列C語言陣列
- 一維陣列陣列
- 多維陣列陣列
- 二維陣列陣列
- NumPy 基礎 (一) - 建立陣列陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- 第四章:多維陣列和矩陣 ------------- 4.3 基礎題:Z形列印二位陣列陣列矩陣
- 多維陣列轉一維陣列(降維的多種方式)陣列
- 一維多維陣列陣列
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- 求二維陣列中最大子陣列的和陣列
- 二維陣列排序陣列排序
- Java二維陣列Java陣列
- vector 二維陣列陣列
- 多維陣列排序陣列排序
- Java break、continue 詳解與陣列深入解析:單維陣列和多維陣列詳細教程Java陣列