一、数组概述
数组就是用来存储一批同种类型数据的内存区域(可以理解成容器)
二、实例
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"); } } }