網(wǎng)站三網(wǎng)合一雙11銷量數(shù)據(jù)
目錄
一、數(shù)組介紹
二、數(shù)組的定義和初始化?
1.數(shù)組的定義
2.數(shù)組的初始化
2.1 數(shù)組的靜態(tài)初始化
2.2 數(shù)組的動態(tài)初始化?
2.3 數(shù)組動態(tài)初始化和靜態(tài)初始化的區(qū)別
三、數(shù)組的地址值和元素訪問
1. 數(shù)組的地址值
?2. 數(shù)組的元素訪問
?四、?數(shù)組遍歷
?1. 練習:變化數(shù)據(jù)
?五、?數(shù)組的常見問題
六、數(shù)組綜合練習?
1.? 遍歷數(shù)組求和
?2. 亂打數(shù)組中的數(shù)據(jù)
一、數(shù)組介紹
數(shù)組指的是一種容器,可以用來存儲同種數(shù)據(jù)類型的多個值。
- 數(shù)組容器在存儲數(shù)據(jù)的時候,需要結(jié)合隱式轉(zhuǎn)換考慮。
- 例如:int類型的數(shù)組容器(boolean<×>、byte<√>、short<√>、int<√>、double<×>)
- 例如:double類型的數(shù)組容器(byte、short、int、long、float、double都可以)
- 建議:容器的類型,和存儲的數(shù)據(jù)類型保持一致
二、數(shù)組的定義和初始化?
1.數(shù)組的定義
格式 | 范例 |
數(shù)據(jù)類型[ ] 數(shù)組名 | int[ ] array |
數(shù)據(jù)類型 數(shù)組名[ ] | int array[ ] |
2.數(shù)組的初始化
2.1 數(shù)組的靜態(tài)初始化
- 初始化:就是在內(nèi)存中,為數(shù)組容器開辟空間,為將數(shù)據(jù)存入容器中的過程
- 完整格式:數(shù)據(jù)類型 [ ]? 數(shù)組名 = new 數(shù)據(jù)類型 [ ] { 元素1 , 元素2 , 元素3 , ...};
- 簡化格式:數(shù)據(jù)類型 [ ]? 數(shù)組名= { 元素1,元素2, 元素3};
- 范例: int [ ] array = new int [ ] {11 , 22 , 33};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? double[ ] array2? = new double [ ] { 11.1 ,22.2 , 33.3 };?
? ? ? ? ? ??
2.2 數(shù)組的動態(tài)初始化?
- 動態(tài)初始化:初始化時只指定數(shù)組長度,由系統(tǒng)為數(shù)組分配初始值。
- 格式: 數(shù)組類型[ ]? 數(shù)組名 = new 數(shù)組類型[ 數(shù)組長度 ]
- 范例: int[ ]? arr = new int[ 3 ] ;
注意: 在創(chuàng)建的時候,由我們自己指定數(shù)組長度,由虛擬機給出默認的初始化值
public static void main(String[] args) {String[] arr = new String[10];// 添加arr[0] = "001";arr[1] = "002";// 獲取System.out.println(arr[0]); // 001System.out.println(arr[1]); // 002System.out.println(arr[2]); // 打印出來的是默認初始值null// 數(shù)組默認初始化值的規(guī)律:// 整數(shù)類型: 默認初始值為0 // 小數(shù)類型:默認初始值為0.0// 字符類型:默認初始值為'/u0000' 空格// 布爾類型: 默認初始值為false}
2.3 數(shù)組動態(tài)初始化和靜態(tài)初始化的區(qū)別
動態(tài)初始化 | 靜態(tài)初始化 | |
數(shù)組長度 | 手動指定數(shù)組長度,由系統(tǒng)給出默認初始化值 | 手動指定數(shù)組長度,系統(tǒng)根據(jù)元素個數(shù),計算出數(shù)組的長度 |
運用場景 | 只明確元素個數(shù),不明確具體數(shù)值,推薦使用動態(tài)初始化 | 需求中已經(jīng)明確了要操作的具體數(shù)據(jù),直接靜態(tài)初始化即可 |
舉例 | 使用數(shù)組容器來存儲鍵盤錄入的5個整數(shù): | 將全班的學(xué)生成績存入數(shù)組中? |
三、數(shù)組的地址值和元素訪問
1. 數(shù)組的地址值
輸出數(shù)組地址值:int[ ] arr = { 1,2,3,4,5}; System.out.println(arr); // [I@6d03e76 double[] arr2 = {1.1 , 2.2 , 3.3}; System.out.println(arr); // [D@568dbf2//擴展: //解釋一下地址值的格式含義: //[ :表示當前是一個數(shù)組 //D: 表示當前數(shù)組里面的元素是double類型 //@ : 表示一個問題符號 (固定格式) //568dbf2 : 才是真正的地址值(十六位進制)
?
?2. 數(shù)組的元素訪問
- 索引: 也叫做下標、角標
- 索引的特點:從0開始、逐個+1增長,連續(xù)不間斷
public static void main(String[] args) {//利用索引對數(shù)組中元素進行訪問//1. 獲取數(shù)組中的元素//格式: 數(shù)組名[索引]int[] arr = {1,2,3,4,5}; //獲取數(shù)組中的第一個元素//其實就是0索引上對應(yīng)的元素//int number = arr[0]// System.out.println("number"); // 1//獲取數(shù)組中1索引上對應(yīng)的數(shù)據(jù),并且打印出來// System.out.println(arr[1]); // 2//把數(shù)據(jù)存儲到數(shù)組當中去//格式: 數(shù)組名[索引] = 具體數(shù)據(jù)/便利arr[0] = 100;System.out.println(arr[0]); //100}
?四、?數(shù)組遍歷
遍歷:將數(shù)組中所有的內(nèi)容取出來,取出來之后可以(打印、求和、判斷 ..)
注意:遍歷指的是取出數(shù)據(jù)的過程,不要局限的理解為,遍歷就是打印!
public static void main(String[] args) {int[] arr = { 1, 2, 3, 5, 4 };// 利用循環(huán)改進代碼// 開始: 0 ; 結(jié)束條件: 數(shù)組長度- 1(最大索引)/** for (int i = 0; i < 5; i++) { System.out.println(arr[i]);*/// 在java中,關(guān)于數(shù)組的一個長度屬性: length// 調(diào)用方式 : 數(shù)組名.lengthfor (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
?1. 練習:變化數(shù)據(jù)
需求:定義一個數(shù)組,存儲1,2,3,4,5,6,7,8,9,10,遍歷數(shù)組得到每一個元素。
要求:
? ? ? ? 1.如果是奇數(shù),則將當前數(shù)字擴大兩倍;? ? ? ? 2.如果是偶數(shù),則將當前數(shù)字變成二分之一。
public static void main(String[] args) {// 1.定義一個數(shù)組,并添加數(shù)據(jù)int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 2.遍歷數(shù)組得到每一個元素for (int i = 0; i < arr.length; i++) {// i:依次表示數(shù)組里面每一個索引// arr[i]:依次表示數(shù)組里面的每一個元素// 3.對每一個元素進行判斷if (arr[i] % 2 == 0) {arr[i] = arr[i] / 2;} else {arr[i] = arr[i] * 2;}}//遍歷數(shù)組for (int j = 0; j < arr.length; j++) {System.out.print(arr[j]+",");}}
運算結(jié)果:
?五、?數(shù)組的常見問題
當訪問了數(shù)組中不存在的索引,就會引發(fā)索引越界異常。
public static void main(String[] args) {//定義一個數(shù)組int[] arr = {1,2,3,4,5};//長度:5//最小索引:0//最大索引: 4(數(shù)組長度 - 1)System.out.println(arr[10]);//報錯原因: Index 10 out of bounds for length 5}
六、數(shù)組綜合練習?
1.? 遍歷數(shù)組求和
需求:生成10個1~100之間的隨機數(shù)存入數(shù)組。
? ? ? ? 1)求出所有數(shù)據(jù)的和
? ? ? ? 2)求所有數(shù)據(jù)的平均數(shù)
? ? ? ? 3)統(tǒng)計有多少個數(shù)據(jù)比平均值小
public static void main(String[] args) {//1.定義數(shù)組int[ ] arr =new int[10]; //2.把隨機數(shù)存入數(shù)組當中Random r = new Random();for(int i =0;i<arr.length;i++) {int number = r.nextInt(100) + 1;//把生成的隨機數(shù)添加到數(shù)組當中//數(shù)組名[索引] = 數(shù)據(jù);arr[i] = number;}//遍歷數(shù)組/*for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}*/// 1.求出所有數(shù)據(jù)之和int sum = 0;for (int i = 0; i < arr.length; i++) {sum = sum + arr[i];}System.out.println("數(shù)組中所有的和為:"+sum);//2.求出所有數(shù)據(jù)的平均數(shù)int avg = sum / arr.length;System.err.println("數(shù)組中的平均值為:"+avg);//3.統(tǒng)計有多少數(shù)據(jù)比平均值小int count = 0;for (int j = 0; j < arr.length; j++) {if (arr[j] < avg) {count ++ ;}}System.out.println("數(shù)組中比平均數(shù)小的個數(shù)有:" + count);}
運算結(jié)果:
?2. 亂打數(shù)組中的數(shù)據(jù)
需求:定義一個數(shù)組,存入1~5。要求打亂數(shù)組中所有數(shù)據(jù)的順序。
public static void main(String[] args) {//1.定義數(shù)組存儲1~5int[] arr = {1,2,3,4,5};//2.循環(huán)遍歷數(shù)組,從0索引開始打亂數(shù)據(jù)的順序Random r = new Random();for (int i = 0; i < arr.length; i++) {//生成一個隨機索引int randomIndex = r.nextInt(arr.length);//拿著隨機索引相同的元素 跟 i 相同的元素進行交換int temp = arr[i];arr[i] =arr[randomIndex];arr[randomIndex] = temp;}//當循環(huán)結(jié)束時,數(shù)組順序已經(jīng)被打亂for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
?運算結(jié)果: