一、數組概述
數組就是用來存儲一批同種類型數據的內存區域(可以理解成容器)
二、實例
package com.hello.array; import java.util.Random; import java.util.Scanner; /* 一、java內存分配介紹 1、方法區:字節碼文件加載時進入的內存 .class文件 2、棧:方法運行時所進入的內存 變量也是在這裏 3、堆:new出來的東西會在這塊內存中開闢空間併產生地址 4、本地方法棧 5、寄存器 二、兩個數組變量指向同一個數組對象 */ public class Array { public static void main(String[] args) { //靜態初始化數組的格式與數組的訪問 int[] ages = {11,15,21,25,31,35};//完整格式:int[] ages = new int[] {11,15,21,25,31,35}; System.out.println(ages);//打印的是數組存儲的地址 System.out.println(ages[0]);//數組的訪問: 數組名稱[索引], 數組的長度:數組名稱.length,數組的最大索引:數組名.length-1 //動態初始化數組:定義數組的時候只確定元素的類型和數組的長度,之後再存入具體數據。 double[] score = new double[3];//元素默認值:float\double是0.0,byte\short\char\int\long是0,string是null,boolean是false score[0] = 89.5; System.out.println(score[0]); //數組遍歷:就是一個一個數據的訪問 //需求1 數組元素求和:某部門5名員工的銷售額分別是16、26、36、6、100,請計算出他們部門的銷售總額 int [] money = {16,26,36,6,100}; int sum = 0; for(int i=0;i<money.length;i++){ sum += money[i]; } System.out.println(sum); //需求2 數組求最值 int[] faceScore = {15,9000,10000,20000,9500,-5};//定義一個靜態初始化數組,存儲一組顏值 int max = faceScore[0];//定義一個變量用於存儲最大值元素,建議使用第一個元素作爲參照 //遍歷數組的每個元素,依次與最大值變量的數據比較,若較大,則替換 for (int i=0;i<faceScore.length;i++){ //根據實際業務場景,i初始化值應爲1,因爲15不用跟自己比 if(faceScore[i]>max){ max = faceScore[i]; } } System.out.println("數組的最大值是:"+max); //需求3 猜數字遊戲:隨機生成1-20之間的5個數,未猜中提示未命中,猜中提示運氣不錯,並輸出該數據第一次出現的位置,且輸出全部5個數據,最終結束本遊戲 Random r = new Random(); int[] luckyArray = new int[5];//定義一個動態初始化的數組存儲5個隨機的1-20之間的數據 for(int i=0;i<luckyArray.length;i++){ //動態的生成5個隨機數並存儲到數組中去 luckyArray[i] = r.nextInt(20)+1; System.out.println(luckyArray[i]); } Scanner sc = new Scanner(System.in); OUT: while (true){ //使用一個死循環讓用戶進行猜測 System.out.println("請您輸入一個1-20之間的整數進行猜測:"); int guessData = sc.nextInt(); for (int i=0;i<luckyArray.length;i++) { if (guessData == luckyArray[i]) { System.out.println("恭喜您猜中了" + luckyArray[i]); break OUT;//結束了整個死循環,代表遊戲結束了(如果只break,只會會結束for循環,並沒有結束整個while) } } System.out.println("未猜中,請繼續"); } for (int i = 0; i < luckyArray.length; i++) { System.out.print(luckyArray[i]+"\t"); } //需求4:鍵盤錄入一組工號,最終要隨機輸出一組出來作爲排名 Scanner scCode = new Scanner(System.in); int [] codes = new int[5];//動態初始化一個數組,存儲5個工號 for (int i = 0; i < codes.length; i++) { //定義一個循環,依次錄入一個工號存入對應的位置 System.out.println("請輸入第"+(i+1)+"個員工的工號"); codes[i] = scCode.nextInt(); } //遍歷數組中的每個元素,然後隨機一個索引出來 ,讓該元素與隨機索引位置處的元素進行交換 //codes = [11,22,33,44,55] Random r1 = new Random(); for (int i = 0; i < codes.length; i++) { //當前遍歷的元素值:codes[i] //隨機一個索引位置出來:codes[index] int index = r1.nextInt(codes.length); //定義一個臨時變量存儲index位置處的值 int temp = codes[index]; codes[index]=codes[i]; codes[i] = temp; } for (int i = 0; i < codes.length; i++) { System.out.print(codes[i]+"\t"); } //冒泡排序(要了解比較的輪次,每輪比較的次數) //冒泡排序思想:1、從頭開始兩兩比較,把較大的元素與較小的元素進行交換; // 2、每輪把當前最大的一個元素存入到數組當前的末尾。 //冒泡排序的實現步驟:1、定義一個外部循環控制總共需要冒幾輪(數組的長度-1); // 2、定義一個內部循環,控制每輪依次往後比較幾個位置(數組長度-i-1); // 3、如果當前位置的元素值>後一個位置的元素值,兩者交換。 int [] arr = {5,2,3,1};//定義一個數組,存儲一些數據 //定義一個循環控制比較的輪數 for(int i=0;i<arr.length-1;i++){ //i==0 比較的次數3 j= 0 1 2 //i==1 比較的次數2 j= 0 1 //i==2 比較的次數1 j= 0 //定義一個循環控制每輪比較的次數 for(int j=0;j<arr.length-i-1;j++){ //判斷j當前位置的元素值 if(arr[j]>arr[j+1]){ int tem = arr[j+1]; arr[j+1]=arr[j]; arr[j]=tem; } } } //遍佈數組的輸出 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+"\t"); } } }