Java數組詳解(Java基礎)

      網友投稿 955 2025-03-31

      本章小結了Java數組的基本語法,分享給新學習的小伙伴,分享獲取新知大家一起進步。

      文章目錄

      一.引言

      二.數組

      三.數組的使用

      四.數組的內存分配

      一.引言

      回顧數據類型:

      (1)基本類型 byte short int long float double char boolean

      (2)引用類型 類 數組 接口 枚舉 注解

      變量:內存中的一塊存儲空間, 存儲的就是常量。

      特點:一個變量只能存儲一個數據,不能存儲多個。

      需求:統(tǒng)計把一個班級的所有學生30個人java成績?

      解決1:使用變量存儲,需要聲明30個變量: int java1=90; int java2=80;

      解決2:使用數組

      二.數組

      什么是數組 ?

      數據的組合,不止一個數據,包含多個數據。數組就是一個變量。

      數組聲明和初始化聲明:

      方式一:數據類型 [] 數組名

      方式二:數據類型 數組名[]

      初始化:

      Java中的數組必須先初始化,然后才可以使用,所謂初始化,就是為數組中的數組元素分配內存空間,并為每個數組 元素賦初始值。

      區(qū)分靜態(tài)初始化和動態(tài)初始化

      靜態(tài)初始化

      初始化時由程序員指定每個數組元素的初始值,由系統(tǒng)計算數組長度。

      語法:數組元素類型[] 數組名 = new 數組元素類型[]{元素0,元素1, };

      1

      可簡寫為:數組元素類型[] 數組名 = {元素0,元素1, };

      1

      說明:任何一個變量都得有自己的數據類型,這里的arr表示數組變量名稱,int表示數組中元素的類型,int[]才是 數組類型

      注意:簡寫靜態(tài)初始化只能一條語句完成,不能分割成兩條語句。

      /* 靜態(tài)初始化:由我們指定元素的初始值,由系統(tǒng)計算長度或者元素的個數 */ int[] arr = new int[]{1,56,76,87}; int[] arr1 = {1,56,76,87}; String[] arr2 = new String[]{"434","gfg","gjf545"}; String[] arr3 = {"434","gfg","gjf545"}; //Scanner[] arr4 = char[] arr5 = new char[]{'2','g','*'}; char[] arr5 ={'2','g','*'};

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      動態(tài)初始化

      初始化時程序員只指定數組長度,由系統(tǒng)為數組元素分配初始值

      語法:元素類型[] 數組名 = new 元素類型[元素個數或者數組長度];

      1

      系統(tǒng)對初始值分配規(guī)則如下:

      a.整數型為0

      b.浮點型為0.0

      c.字符型為‘\u0000’(不同的系統(tǒng)平臺顯示結果不同)

      d.布爾類型為false

      e.引用類型為null

      /* 動態(tài)初始化:初始化時由程序員指定數組的長度,系統(tǒng)負責分配元素的初始值 */ int[] array1 = new int[5];//0 String[] array2 = new String[3];//null char[] array3 = new char[10];//\u0000

      1

      2

      3

      4

      5

      6

      7

      注意:a.在初始化數組時,不要靜態(tài)初始化和動態(tài)初始化同時使用,也就是說,不要在進行數組初始化時,既指定數組 的長度,也為每個數組元素分配初始值。

      三.數組的使用

      (1)通過下標訪問指定元素

      注意:

      ①Java語言的數組索引(下標、角標)是從0開始的,數組的下標的最大值長度-1

      ②不要超出索引的范圍,如果超出范圍出現異常 java.lang.ArrayIndexOutOfBoundsException(索引越界異常)

      //使用靜態(tài)初始化的方式定義一個數組 //數組中可以存放重復數據 int[] arr1 = new int[]{2,65,76,83,32,5,5}; //1.訪問數組中的元素 //格式:數組名稱[下標] 表示獲取指定下標所對應的值 //需求:獲取下標3對應的元素 int num1 = arr1[3]; System.out.println(num1);//83 System.out.println(arr1[3]);//83

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      (2)2.3.2獲取數組元素的個數

      在Java中,所有數組都提供了一個length屬性,通過這個屬性可以訪問到數組的長度或者數組中元素的個數

      //2.獲取數組中的元素個數或者數組的長度 //格式:數組名稱.length; int len = arr1.length; System.out.println("數組arr1的長度為:" + len);

      1

      2

      3

      (3)修改數組元素的值

      //3.修改數組元素的值int num2 = arr1[6]; System.out.println(num2);// //格式:數組名稱[下標] = 被修改之后的值 //注意:不管是靜態(tài)初始化還是動態(tài)初始化,都可以采用這種方式修改元素的值arr1[6] = 100; System.out.println(arr1[6]);//100

      1

      2

      3

      4

      5

      (4)遍歷數組

      依次訪問數組中的每一個元素,獲取每個下標對應的元素值

      方式一:簡單for循環(huán)

      方式二:增強for循環(huán)(foreach)無法使用下標

      public class Demo { public static void main(String[] args) { int[] arr1 = new int[]{2,65,76,83,32,5,5}; //4.遍歷數組 int n0 = arr1[0]; int n1 = arr1[1]; int n2 = arr1[2]; int n3 = arr1[3]; int n4 = arr1[4]; int n5 = arr1[5]; int n6 = arr1[6]; //1>簡單for循環(huán) //i表示下標,0~arr1.length for(int i = 0;i < arr1.length;i++) { int n = arr1[i]; System.out.println(n); } /* 2>增強for循環(huán)【foreach】JDK1.5之后新增的 優(yōu)點:用于遍歷數組和集合,無需通過數組下標,就可以直接訪問數組或者集合中的元素 語法: for(元素數據類型 變量名:數組名稱) { System.out.println(變量名); } */ //底層工作原理:根據下標獲取數組元素 for(int num : arr1) { System.out.println("增強for循環(huán)的結果:" + num); } /* 兩種遍歷方式的選擇:不需要知道下標,只需要獲取元素值,則采用增強for循環(huán) */ //需求:打印下標為偶數的元素值【只能采用簡單for循環(huán)】 for(int i = 0;i < arr1.length;i++) { if(i % 2 == 0) { int n = arr1[i]; System.out.println(n); } } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      案例練習:鍵盤錄入學生java成績,并把成績保存在數組中,然后計算總分和平均分?

      public class Demo { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("請輸入班級人數"); int count=input.nextInt(); int[] score=new int[count]; for (int i = 0; i < score.length; i++) { System.out.println("請輸入第"+(i+1)+"個人的java成績"); score[i]=input.nextInt(); } System.out.println(" "); int sum=0;//總分 double avg=0;//平均分 for (int n : score) { sum=sum+n; } avg=(double)sum/count; System.out.println("總分是:"+sum); System.out.println("平均分是:"+avg); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      四.數組的內存分配

      java內存:

      棧:存儲基本類型數據和引用類型的地址,特點:先進后出,一般空間比較小,存取速度較快

      堆:存儲引用類型數據, 特點:空間比較大,存儲速度相對較慢

      方法區(qū): 存儲字符串常量池,靜態(tài)數據,代碼和類的元數據

      數組屬于引用類型,數組引用變量只是一個引用,這個引用變量可以指向任何有效的內存空間,只有當這個引用 指向有效的空間時,才可以通過引用去操作真正數組中的元素。

      結論:數組的引用變量存儲在棧空間中,而真正的數組數據存儲在堆空間在中。

      public class Demo { public static void main(String[] args) { //圖1 使用靜態(tài)初始化的方式初始化一個數組a int[] a = {5,7,20}; System.out.println("a的長度為:" + a.length);//3 int num =8; System.out.println("num:"+num); //圖2 int[] b=new int[4]; System.out.println("b的長度是:"+b.length); b=a; System.out.println("b的長度是:"+b.length); System.out.println(b); //輸出的是地址值 } }

      Java數組詳解(Java基礎)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      拓展:使用數組時常見的異常

      1>數組越界異常:ArrayIndexOutofBoundsException

      出現的時機:當使用了不存在的下標時,則會出現這個錯誤0~length - 1

      2>空指針異常:NullPointerException

      出現的時機:當數組的引用變量賦值為null,還在后面的代碼中使用這個引用

      The best investment is in yourself

      2020.04.16 記錄辰兮的第56篇博客

      Java 數據結構

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

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

      上一篇:智能鎖品牌哪個比較好,性價比高?諾托智能鎖
      下一篇:【云駐共創(chuàng)】知識計算如何讓新冠藥物篩查效率提升70%
      相關文章
      亚洲乱理伦片在线观看中字| 亚洲性色高清完整版在线观看| 亚洲中文字幕无码mv| 亚洲欧洲精品在线| 91情国产l精品国产亚洲区| 婷婷亚洲综合五月天小说| 亚洲精品成人无限看| 国产精品亚洲A∨天堂不卡| 国产AV无码专区亚洲精品| 久久国产亚洲电影天堂| 亚洲综合自拍成人| 亚洲精品国产福利片| 亚洲伊人精品综合在合线| 国产亚洲精品影视在线| 亚洲国产精品美女久久久久| 精品久久久久久久久亚洲偷窥女厕| 大桥未久亚洲无av码在线| 国产在亚洲线视频观看| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲AV网一区二区三区| 亚洲AV网一区二区三区| 亚洲免费一区二区| 亚洲精品字幕在线观看| 亚洲国产精品久久66| 精品无码一区二区三区亚洲桃色| 亚洲黄色免费网址| 亚洲人成网站在线观看播放青青| 美女视频黄免费亚洲| 亚洲爆乳成av人在线视菜奈实| 噜噜噜亚洲色成人网站| 久久久久国产亚洲AV麻豆| 亚洲国产一二三精品无码| 久久精品国产亚洲77777| 亚洲人成日本在线观看| 亚洲依依成人亚洲社区| 在线观看亚洲免费视频| 最新亚洲成av人免费看| 无码久久精品国产亚洲Av影片| 亚洲伊人久久精品| 亚洲AV无码国产剧情| 久久影院亚洲一区|