【愚公系列】2021年12月 Java教學課程 18-數(shù)組

      網(wǎng)友投稿 562 2025-04-02

      一、數(shù)組


      1.1 數(shù)組介紹

      數(shù)組就是存儲數(shù)據(jù)長度固定的容器,存儲多個數(shù)據(jù)的數(shù)據(jù)類型要一致。

      1.2 數(shù)組的定義格式

      數(shù)據(jù)類型[] 數(shù)組名

      示例:

      int[] arr; double[] arr; char[] arr;

      數(shù)據(jù)類型 數(shù)組名[]

      示例:

      int arr[]; double arr[]; char arr[];

      1.3 數(shù)組的動態(tài)初始化

      數(shù)組動態(tài)初始化就是只給定數(shù)組的長度,由系統(tǒng)給出默認初始化值

      數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];

      int[] arr = new int[3];

      等號左邊:

      int:數(shù)組的數(shù)據(jù)類型

      []:代表這是一個數(shù)組

      arr:代表數(shù)組的名稱

      等號右邊:

      new:為數(shù)組開辟內(nèi)存空間

      int:數(shù)組的數(shù)據(jù)類型

      []:代表這是一個數(shù)組

      5:代表數(shù)組的長度

      代碼 :

      package com.itheima.array; public class Demo2Array { /* 數(shù)組的動態(tài)初始化: 在初始化的時候, 需要手動指定數(shù)組的長度, 系統(tǒng)會為數(shù)組容器分配初始值. 動態(tài)初始化格式: 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度]; 注意: 打印數(shù)組變量的時候, 會打印出數(shù)組的內(nèi)存地址 [I@10f87f48 : @ : 分隔符 [ : 當前的空間是一個數(shù)組類型 I : 當前數(shù)組容器中所存儲的數(shù)據(jù)類型 10f87f48 : 十六進制內(nèi)存地址 0 1 2 3 4 5 6 7 8 9 a b c d e f */ public static void main(String[] args) { // 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度]; // 通過new關鍵字創(chuàng)建了一個int類型的數(shù)組容器, 該容器可以存儲5個int類型的整數(shù), 該容器被arr數(shù)組變量所記錄 int[] arr = new int[5]; // [I@10f87f48 System.out.println(arr); byte[] bArr = new byte[3]; // [B@b4c966a System.out.println(bArr); } }

      1.4 數(shù)組元素訪問

      每一個存儲到數(shù)組的元素,都會自動的擁有一個編號,從0開始。

      這個自動編號稱為數(shù)組索引(index),可以通過數(shù)組的索引訪問到數(shù)組中的元素。

      數(shù)組名[索引];

      package com.itheima.array; public class Demo3ArrayIndex { /* 數(shù)組動態(tài)初始化: 初始化的時候, 手動指定數(shù)組長度, 系統(tǒng)會為數(shù)組容器分配初始值. 數(shù)組的元素訪問格式: 數(shù)組名[索引] 索引: 數(shù)組中數(shù)據(jù)的編號方式, 編號從0開始 作用: 訪問數(shù)組容器中的空間位置 注意: 數(shù)組在創(chuàng)建完畢后, 即使沒有賦值, 也可以取出, 但取出的元素都是默認初始化值. */ public static void main(String[] args) { int[] arr = new int[3]; // 0 1 2 System.out.println(arr); // 數(shù)組的內(nèi)存地址 [I@10f87f48 // 數(shù)組名[索引] 訪問數(shù)組容器中的空間位置 System.out.println(arr[0]); // 0 系統(tǒng)自動分配的默認初始化值 System.out.println(arr[1]); System.out.println(arr[2]); System.out.println("--------------"); // 數(shù)組名[索引] arr[0] = 11; arr[1] = 22; arr[2] = 33; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }

      1.5 內(nèi)存分配

      內(nèi)存是計算機中的重要原件,臨時存儲區(qū)域,作用是運行程序。

      我們編寫的程序是存放在硬盤中的,在硬盤中的程序是不會運行的。

      必須放進內(nèi)存中才能運行,運行完畢后會清空內(nèi)存。

      Java虛擬機要運行程序,必須要對內(nèi)存進行空間的分配和管理。

      目前我們只需要記住兩個內(nèi)存,分別是:棧內(nèi)存和堆內(nèi)存

      1.6 Java內(nèi)存分配-一個數(shù)組內(nèi)存圖

      1.7 兩個數(shù)組內(nèi)存圖

      1.8 多個數(shù)組指向相同內(nèi)存圖

      1.9 數(shù)組的靜態(tài)初始化

      在創(chuàng)建數(shù)組時,直接將元素確定

      完整版格式

      數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,...};

      簡化版格式

      數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,...};

      package com.itheima.array2; public class Demo1Array { /* 數(shù)組靜態(tài)初始化 : 初始化時指定每個數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度 完整格式: 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...}; 簡化格式: 數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...}; */ public static void main(String[] args) { // 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...}; int[] arr = new int[]{11,22,33}; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); // 數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...}; int[] arr2 = {44,55,66}; System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); } }

      【愚公系列】2021年12月 Java教學課程 18-數(shù)組

      1.10 數(shù)組操作的兩個常見問題

      出現(xiàn)原因

      public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }

      數(shù)組長度為3,索引范圍是0~2,但是我們卻訪問了一個3的索引。

      程序運行后,將會拋出ArrayIndexOutOfBoundsException 數(shù)組越界異常。在開發(fā)中,數(shù)組的越界異常是不能出現(xiàn)的,一旦出現(xiàn)了,就必須要修改我們編寫的代碼。

      解決方案

      將錯誤的索引修改為正確的索引范圍即可!

      出現(xiàn)原因

      public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; //把null賦值給數(shù)組 arr = null; System.out.println(arr[0]); } }

      arr = null 這行代碼,意味著變量arr將不會在保存數(shù)組的內(nèi)存地址,也就不允許再操作數(shù)組了,因此運行的時候會拋出 NullPointerException 空指針異常。在開發(fā)中,空指針異常是不能出現(xiàn)的,一旦出現(xiàn)了,就必須要修改我們編寫的代碼。

      解決方案

      給數(shù)組一個真正的堆內(nèi)存空間引用即可!

      1.11 數(shù)組遍歷

      數(shù)組遍歷:就是將數(shù)組中的每個元素分別獲取出來,就是遍歷。遍歷也是數(shù)組操作中的基石。

      public class ArrayTest01 { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); } }

      以上代碼是可以將數(shù)組中每個元素全部遍歷出來,但是如果數(shù)組元素非常多,這種寫法肯定不行,因此我們需要改造成循環(huán)的寫法。數(shù)組的索引是 0 到 lenght-1 ,可以作為循環(huán)的條件出現(xiàn)。

      public class ArrayTest01 { public static void main(String[] args) { //定義數(shù)組 int[] arr = {11, 22, 33, 44, 55}; //使用通用的遍歷格式 for(int x=0; x

      1.12 數(shù)組獲取最大值

      最大值獲取:從數(shù)組的所有元素中找出最大值。

      實現(xiàn)思路:

      定義變量,保存數(shù)組0索引上的元素

      遍歷數(shù)組,獲取出數(shù)組中的每個元素

      將遍歷到的元素和保存數(shù)組0索引上值的變量進行比較

      如果數(shù)組元素的值大于了變量的值,變量記錄住新的值

      數(shù)組循環(huán)遍歷結束,變量保存的就是數(shù)組中的最大值

      代碼實現(xiàn):

      package com.itheima.test; import java.util.Scanner; public class Test2Array { /* 需求: 從數(shù)組中查找最大值 int[] arr = {12,45,98,73,60}; 實現(xiàn)步驟: 1. 假設數(shù)組中的第一個元素為最大值 2. 遍歷數(shù)組, 獲取每一個元素, 準備進行比較 3. 如果比較的過程中, 出現(xiàn)了比max更大的, 讓max記錄更大的值 4. 循環(huán)結束后, 打印最大值. */ public static void main(String[] args) { int[] arr = {12,45,98,73,60}; // 1. 假設數(shù)組中的第一個元素為最大值 int max = arr[0]; // 2. 遍歷數(shù)組, 獲取每一個元素, 準備進行比較 for(int i = 1; i < arr.length; i++){ // 3. 如果比較的過程中, 出現(xiàn)了比max更大的, 讓max記錄更大的值 if(arr[i] > max){ max = arr[i]; } } // 4. 循環(huán)結束后, 打印最大值. System.out.println("max:" + max); } }

      1.13 數(shù)組元素求和

      需求:鍵盤錄入5個整數(shù),存儲到數(shù)組中,并對數(shù)組求和

      思路:

      1.創(chuàng)建鍵盤錄入對象,準備鍵盤錄入

      2.定義一個求和變量,準備記錄累加后的結果

      3.動態(tài)初始化一個長度為5的int數(shù)組,準備存儲鍵盤錄入的數(shù)值

      4.將鍵盤錄入的數(shù)值存儲到數(shù)組中

      5.遍歷數(shù)組,取出每一個元素,并求和

      6.輸出總和

      代碼實現(xiàn):

      package com.itheima.test; import java.util.Scanner; public class Test3Array { /* 需求:鍵盤錄入5個整數(shù),存儲到數(shù)組中,并對數(shù)組求和 思路: 1.創(chuàng)建鍵盤錄入對象,準備鍵盤錄入 2.定義一個求和變量,準備記錄累加后的結果 3.動態(tài)初始化一個長度為5的int數(shù)組,準備存儲鍵盤錄入的數(shù)值 4.將鍵盤錄入的數(shù)值存儲到數(shù)組中 5.遍歷數(shù)組,取出每一個元素,并求和 6.輸出總和 */ public static void main(String[] args) { // 1.創(chuàng)建鍵盤錄入對象,準備鍵盤錄入 Scanner sc = new Scanner(System.in); // 2.定義一個求和變量,準備記錄累加后的結果 int sum = 0; // 3.動態(tài)初始化一個長度為5的int數(shù)組,準備存儲鍵盤錄入的數(shù)值 int[] arr = new int[5]; // 4.將鍵盤錄入的數(shù)值存儲到數(shù)組中 for(int i = 0; i < arr.length; i++){ System.out.println("請輸入第" + (i+1) + "個整數(shù):"); //arr[i] = 10; arr[i] = sc.nextInt(); } // 5.遍歷數(shù)組,取出每一個元素,并求和 for (int i = 0; i < arr.length; i++) { sum += arr[i]; } // 6.輸出總和 System.out.println("sum:" + sum); } }

      1.14 數(shù)組基本查找【應用】

      需求:

      已知一個數(shù)組 arr = {19, 28, 37, 46, 50}; 鍵盤錄入一個數(shù)據(jù),查找該數(shù)據(jù)在數(shù)組中的索引,并在控

      制臺輸出找到的索引值。

      思路:

      1.定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素的初始化

      2.鍵盤錄入要查找的數(shù)據(jù),用一個變量接收

      3.定義一個索引變量,初始值為-1

      4.遍歷數(shù)組,獲取到數(shù)組中的每一個元素

      5.拿鍵盤錄入的數(shù)據(jù)和數(shù)組中的每一個元素進行比較,如果值相同,就把該值對應的索引賦值給索引變量,并結束循環(huán)

      6.輸出索引變量

      代碼實現(xiàn):

      public static void main(String[] args) { // 1.定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素的初始化 int[] arr = {19, 28, 37, 46, 50}; // 2.鍵盤錄入要查找的數(shù)據(jù),用一個變量接收 Scanner sc = new Scanner(System.in); System.out.println("請輸入您要查找的元素:"); int num = sc.nextInt(); // 3.定義一個索引變量,初始值為-1 // 假設要查找的數(shù)據(jù), 在數(shù)組中就是不存在的 int index = -1; // 4.遍歷數(shù)組,獲取到數(shù)組中的每一個元素 for (int i = 0; i < arr.length; i++) { // 5.拿鍵盤錄入的數(shù)據(jù)和數(shù)組中的每一個元素進行比較,如果值相同,就把該值對應的索引賦值給索引變量,并結束循環(huán) if(num == arr[i]){ // 如果值相同,就把該值對應的索引賦值給索引變量,并結束循環(huán) index = i; break; } } // 6.輸出索引變量 System.out.println(index); } }

      1.15 評委打分【應用】

      需求:在編程競賽中,有6個評委為參賽的選手打分,分數(shù)為0-100的整數(shù)分。

      選手的最后得分為:去掉一個最高分和一個最低分后 的4個評委平均值 (不考慮小數(shù)部分)。

      思路:

      1.定義一個數(shù)組,用動態(tài)初始化完成數(shù)組元素的初始化,長度為6

      2.鍵盤錄入評委分數(shù)

      3.由于是6個評委打分,所以,接收評委分數(shù)的操作,用循環(huán)

      4.求出數(shù)組最大值

      5.求出數(shù)組最小值

      6.求出數(shù)組總和

      7.按照計算規(guī)則進行計算得到平均分

      8.輸出平均分

      代碼實現(xiàn):

      public static void main(String[] args) { // 1.定義一個數(shù)組,用動態(tài)初始化完成數(shù)組元素的初始化,長度為6 int[] arr = new int[6]; // 2.鍵盤錄入評委分數(shù) Scanner sc = new Scanner(System.in); // 3.由于是6個評委打分,所以,接收評委分數(shù)的操作,用循環(huán) for (int i = 0; i < arr.length; i++) { System.out.println("請輸入第" + (i+1) + "個評委的打分:"); int score = sc.nextInt(); if(score >= 0 && score <= 100){ // 合法的分值 arr[i] = score; }else{ // 非法的分值 System.out.println("您的打分輸入有誤, 請檢查是否是0-100之間的"); i--; } } // 4.求出數(shù)組最大值 int max = arr[0]; for (int i = 1; i < arr.length; i++) { if(max < arr[i]){ max = arr[i]; } } // 5.求出數(shù)組最小值 int min = arr[0]; for (int i = 1; i < arr.length; i++) { if(min > arr[i]){ min = arr[i]; } } // 6.求出數(shù)組總和 int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } // 7.按照計算規(guī)則進行計算得到平均分 int avg = (sum - max - min ) / 4; // 8.輸出平均分 System.out.println(avg); } }

      5G教育 Java 數(shù)據(jù)結構

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:數(shù)據(jù)驗證是個寶,數(shù)據(jù)錄入沒煩惱
      下一篇:【2021最新版】Spring Boot面試題總結(92道題含答案解析)
      相關文章
      国产精品成人亚洲| 在线观看亚洲AV日韩A∨| 精品国产_亚洲人成在线| 亚洲人成人网毛片在线播放| 亚洲喷奶水中文字幕电影| 亚洲视频一区在线观看| 亚洲精品免费观看| 久久久亚洲AV波多野结衣| 色婷婷亚洲十月十月色天| 久久精品国产亚洲AV麻豆网站| 久久久久亚洲精品影视| 久久夜色精品国产亚洲AV动态图| 亚洲国产精品成人精品无码区 | 亚洲女人被黑人巨大进入| 国产成人综合亚洲| 夜色阁亚洲一区二区三区| 亚洲Av无码国产情品久久| 亚洲成av人片在线观看天堂无码| 国产在亚洲线视频观看| 无码专区一va亚洲v专区在线| 亚洲午夜av影院| 亚洲婷婷五月综合狠狠爱| 亚洲国产精品无码成人片久久| 亚洲AV无码一区东京热久久| 亚洲国产综合91精品麻豆| 亚洲精品国产免费| 久久久久精品国产亚洲AV无码| 亚洲一区AV无码少妇电影| 含羞草国产亚洲精品岁国产精品| 国产成人精品亚洲一区| 亚洲午夜无码AV毛片久久| 亚洲毛片αv无线播放一区| 亚洲AV第一页国产精品| 亚洲精品午夜久久久伊人| 国产成人精品日本亚洲直接| 亚洲gay片在线gv网站| 亚洲国产精品综合久久网络| 亚洲欧洲日产国码无码久久99| 亚洲视频.com| 亚洲日日做天天做日日谢| 日韩亚洲人成在线综合|