小猿圈java之陣列
阿新 • • 發佈:2019-08-24
基本資料結構中,陣列是很重要的,這篇小猿圈加加對陣列詳解一席,具體使用,在學習過程中有困惑的朋友,可以看一下加加的這篇文章,看到就是賺到,讓我們一起看看吧。
一、陣列的基本使用
public class Array01 { /** * 陣列:一組相同資料型別的集合! 在記憶體中開闢一連串的空間! * 和String一樣都是 引用資料型別! * 資料型別 [] 陣列名稱; * 陣列的下標=陣列的長度-1 */ public static void main(String[] args) { // 01.宣告陣列 建立了一個火車廂 int[] nums; // 02.分配空間 給火車廂建立座位 nums = new int[5]; // 03.賦值 旅客入座 nums[0] = 50; // 04.使用 nums.length(獲取陣列的長度) for (int i = 0; i < nums.length; i++) { System.out.println("陣列nums的第" + (i + 1) + "個位置的資料是:" + nums[i]); } } // 宣告陣列的同時給陣列賦值 @Test public void test01() { /** * 給你說 建立車廂的同時,告訴你裡面有多少個座位 * * int [] nums; * nums={ 1, 2, 3, 4, 5 }; 這種寫法是錯誤的! */ int[] nums = { 1, 2, 3, 4, 5 }; // 找到下標為3的資料 System.out.println(nums[3]); } @Test public void test02() { // int[] nums = new int[5]; 可以 常用的方式 int[] nums = new int[] { 1, 2, 3, 4, 5 }; // 找到下標為3的資料 System.out.println(nums[3]); } /** * 計算5位學生的平均分 */ @Test public void test03() { // 01.建立一個長度為5的double型別的陣列 儲存學生成績 double[] scores = new double[5]; // 02.迴圈給學生成績賦值 Scanner scanner = new Scanner(System.in); double sum = 0; // 儲存總成績 for (int i = 0; i < scores.length; i++) { System.out.println("請輸入第" + (i + 1) + "位同學的成績"); scores[i] = scanner.nextDouble(); // 每個學生成績需要加到sum中 sum += scores[i]; } System.out.println("學生的總成績是:" + sum); System.out.println("學生的平均分是:" + (sum / scores.length)); } /** * 有一個數列:8,4,2,1,23,344,12 迴圈輸出數列的值 求數列中所有數值的和 猜數遊戲:從鍵盤中任意輸入一個數據,判斷數列中是否包含此數 */ @Test public void test04() { // 01.建立int型別陣列 int nums[] = { 8, 4, 2, 1, 23, 344, 12 }; // 定義變數儲存總和 int sum = 0; // 02.迴圈輸出數列的值 for (int i = 0; i < nums.length; i++) { System.out.print(nums[i] + ","); sum += nums[i]; } System.out.println("\n陣列中數值的總和:" + sum); // 猜數遊戲:從鍵盤中任意輸入一個數據,判斷數列中是否包含此數 Scanner scanner = new Scanner(System.in); System.out.println("請輸入一個數字:"); int num = scanner.nextInt(); // 定義標記 來記錄是否中獎 boolean flag = false; for (int i = 0; i < nums.length; i++) { if (num == nums[i]) { flag = true; break; } } if (flag) { // 判斷標記 System.out.println("恭喜您!中大獎!"); } else { System.out.println("沒有找到......"); } } /** * 以表格的形式輸出5筆購物金額及總金額 */ @Test public void test05() { double[] pays = new double[5]; double sum = 0; // 總金額 Scanner scanner = new Scanner(System.in); System.out.println("請輸入本月的消費記錄:"); for (int i = 0; i < pays.length; i++) { System.out.println("請輸入" + (i + 1) + "次的消費金額:"); pays[i] = scanner.nextDouble(); // 給陣列中每一個元素賦值 // 求和 sum += pays[i]; } // 輸出消費詳情 遍歷(從集合中取得資料) System.out.println("序號\t\t金額"); for (int i = 0; i < pays.length; i++) { System.out.println((i + 1) + "\t\t" + pays[i]); } System.out.println("總金額:" + sum); } /** * Arrays :陣列的操作類 */ @Test public void test06() { double[] pays = new double[5]; Scanner scanner = new Scanner(System.in); System.out.println("請輸入本月的消費記錄:"); for (int i = 0; i < pays.length; i++) { System.out.println("請輸入" + (i + 1) + "次的消費金額:"); pays[i] = scanner.nextDouble(); // 給陣列中每一個元素賦值 } // 沒有排序的遍歷 for (int i = 0; i < pays.length; i++) { System.out.println(pays[i]); } System.out.println("*************升序之後***************"); Arrays.sort(pays);// 升序排列 for (int i = 0; i < pays.length; i++) { System.out.println(pays[i]); } } }
二、運算元組的工具類
/** * 運算元組的工具類! */ public class Arrays02 { // equals(arr1, arr2) :比較兩個陣列的內容和長度 是否一致 @Test public void testEquals() { int[] nums1 = { 10, 20, 30, 50 }; int[] nums2 = nums1; int[] nums3 = { 10, 20, 30 }; System.out.println("nums1與nums2比較:" + Arrays.equals(nums1, nums2)); System.out.println("nums1==nums2比較:" + (nums1 == nums2)); } // sort(arr):對陣列中的元素進行升序的排列 @Test public void testSort() { int[] nums = { 10, 50, 30, 20 }; Arrays.sort(nums); for (int i = 0; i < nums.length; i++) { System.out.println(nums[i]); } } /** * toString :把一個數組變成字串 * [10, 50, 30, 20] 集合toString的結果! */ @Test public void testToString() { int[] nums = { 10, 50, 30, 20 }; System.out.println(Arrays.toString(nums)); } /** * fill(arr,val):將arr陣列中的所有元素都賦值成了val */ @Test public void testFill() { int[] nums = { 10, 50, 30, 20 }; System.out.println(Arrays.toString(nums)); Arrays.fill(nums, 100); System.out.println(Arrays.toString(nums)); } /** * copyOf(arr,length):將陣列arr複製成一個長度為length的新陣列! */ @Test public void testCopyOf() { int[] nums = { 10, 50, 30, 20 }; int[] nums1 = Arrays.copyOf(nums, 3); System.out.println(Arrays.toString(nums1)); } /** * binarySearch(arr,val):查詢val在arr陣列中的下標! * 必須先升序排列! Arrays.sort(arr)!!!! */ @Test public void testBinarySearch() { int[] nums = { 10, 50, 30, 20 }; Arrays.sort(nums); // 10 20 30 50 System.out.println(Arrays.binarySearch(nums, 50)); } }
三、多重陣列
public class DoubleArray04 { public static void main(String[] args) { int[] clazz = new int[3]; // 儲存班級 int[] students = new int[5]; // 儲存學生 } @Test public void test01() { // 宣告的同時開闢空間 int[][] nums = new int[3][5]; // 3個班級各5名學生 } @Test public void test02() { // 先宣告 再 開闢空間 int[][] nums; nums = new int[3][5]; // 3個班級各5名學生 } @Test public void test03() { // 宣告 開闢空間的同時賦值 int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 } }; System.out.println(nums.length);// 3個班級各5名學生 } @Test public void test04() { int[][] nums = new int[3][5]; // 3個班級各5名學生 // 第二個班級的第三個學生 nums[1][2] = 50; } @Test public void test05() { int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } }; /** * nums.length 車廂數 * nums[i].length 車廂中的座位數 * 雙重迴圈: * 外層迴圈執行一次,記憶體迴圈執行一遍! */ for (int i = 0; i < nums.length; i++) { System.out.println("進入了第" + (i + 1) + "個車廂**********"); if (i == 2) { break; // 跳出當前迴圈體 } for (int j = 0; j < nums[i].length; j++) { if (j == 2) { break; // 跳出當前迴圈體 } System.out.println(nums[i][j]); } } } /** * 所有的引用資料型別如果沒有例項化(開闢空間)! 不能使用! * 因為引用資料型別的預設值 是 null! */ @Test public void test06() { int[][] nums = new int[5][]; System.out.println(nums.length); nums[0] = new int[5]; // 開闢空間 nums[1] = new int[6]; nums[0][0] = 50; // 使用 nums[0][1] = 60; nums[0][2] = 70; nums[0][3] = 80; System.out.println(nums[0].length); System.out.println(nums[1].length); } }
四、二維陣列
/**
* 二維陣列: 陣列中的元素 又是一個數組!
*/
@Test
public void test06(){
//01.建立二維陣列
int[][] nums=new int[3][3]; //int [][] nums2={{1,2,3},{4,5,6},{7,8,9}};
nums[0][0]=5;
nums[0][1]=6;
nums[0][2]=7;
nums[1][0]=5;
nums[1][1]=6;
nums[1][2]=7;
nums[2][0]=5;
nums[2][1]=6;
nums[2][2]=7;
}
@Test
public void test07(){
//01.建立二維陣列
int [][] nums={{1,2,3,4},{4,5,6},{7,8}};
System.out.println(nums[0]);//{1,2,3}
System.out.println(nums[0][1]);//2
System.out.println("nums的長度:"+nums.length);
System.out.println("第2個數組中下標是2的元素"+nums[1][2]);
}
/**
* 迴圈打印出陣列所有的元素
*/
@Test
public void test08(){
//01.建立二維陣列
int [][] nums={{1,2,3,4},{4,5,6},{7,8}};
for (int i = 0; i < nums.length; i++) { //外層
System.out.println("這是2維陣列中的第"+(i+1)+"個數組");
for (int j = 0; j < nums[i].length; j++) {//內層
System.out.println("元素的值:"+nums[i][j]);
}
}
}
陣列的詳解具體就是上面這些,大家可以好好練習一下,針對陣列一定要會變通,會寫二維陣列、用陣列實現氣泡排序等等,一定要掌握,重中之重,小編認為這篇陣列講的還算詳細、清晰,希望大家看後可以好好儲存,也可以去小猿圈學習通過視訊,一個免