JAVA基礎 - 數組

一、數組概述

  數組就是用來存儲一批同種類型數據的內存區域(可以理解成容器)

二、實例

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");
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章