数组理解及案例

本文介绍了Java中的数组概念,包括数组的定义、静态和动态初始化方式,数组的访问、赋值以及长度获取。同时,强调了数组的类型限制和长度不可变性,并展示了如何遍历数组以及数组的默认值。此外,还提供了数组应用的实例,如求和、找最大值和随机排序等。
摘要由CSDN通过智能技术生成

数组的定义

●数组是用来储存一批同种类型数据的内存区域。

格式:

int  [] arr{10,20,30,40,50,60};
String []names{"星期一","星期二","星期三"};

静态初始化数组

定义数组时直接给数组赋值

静态初始化数组的格式:


//完整格式:
数据类型  []   数组名 =new  数据类型 {元素1,元素2,元素3...};
double [] scores =new  double  {78,90,76,65};
int [] ages =new int {20,30,40};
//简化格式
数据类型 [] 数组名 ={元素1,元素2,元素3};
int[] ages ={20,30,40};

数组属于引用数据类型,储存数组的在内存中的地址信息

数组的访问

public class ArrayDemo1 {
    public static void main(String[] args) {
        //目标:学会访问数组元素
        int[]ages ={12,13,14};


        //取值:  数组名称[索引]
        System.out.println(ages[0]);  //输出12
        System.out.println(ages[1]);  //输出13
        System.out.println(ages[2]);  //输出14


        //赋值:  数组名称[索引]  =数据
        ages  [2]=100;
        System.out.println(ages[2]);   //输出100

        //访问数组的长度
        System.out.println(ages.length);

        //数据的最大索引: 数组名.length-1 //注意:数字元素>0
        //int[] arr ={};
        //System.out.println(arr.length-1);

    }
}

数组的注意事项

●“数据类型 [] 数组名”也可以写成“数据类型  数组名[]"。

●什么样的数组存放什么类型的数据,否则报错。

int [] arrs =new int [] {80;90;"zuoye"};×

●数组一旦定义出来,程序执行的过程中,长度,类型就固定了。

动态初始化数组

定义数组时只确定元素的数据类型和数组的长度,之后再存入具体数据。

数组的初始化格式:

数据类型 []  数组名 = new  数据类型[长度];
int [] arr = new int [3];
//后赋值
arr [0]=10;
System.out.println(arr[0]);  //10

动态初始化数组的元素默认值

public class arrayDemo2 {
    public static void main(String[] args) {
        //目标:掌握动态初始化元素默认值的规则
        //1.整型数组元素默认值都是0;
        int[] arr = new int[10];
        System.out.println(arr[0]);     //0
        System.out.println(arr[9]);     //0


        //2.字符数组的元素默认值是0
        char[] chars =new char [100];
        System.out.println((int) chars[0]);      //0
        System.out.println((int) chars[99]);    //0
        
        
        //3.浮点型数组的元素默认值是0.0;
        double [] scores = new double [90];
        System.out.println(scores[0]);     //0.0
        System.out.println(scores[89]);   //0.0
        
        
        //4.布尔类型的数组
        boolean[]  booleans =new boolean[100];
        System.out.println(booleans[0]);      //false
        System.out.println(booleans[99]);    //false
        
        
        //5.引用数据类型的数组
        String [] names =new String [90];
        System.out.println(names[0]);    //null
        System.out.println(names[89]);  //null
    }
}

数组遍历

一个一个进行数据访问

public class arrayDemo2 {
    public static void main(String[] args) {
       //目标:学会使用数字元素的遍历
        int[] arr = {12,13,14,15,126};
        
        //原始遍历方法
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);  
        System.out.println(arr[3]);
        
        for(int i=0;i<5;i++){
            System.out.println(arr[i]);
            
        }
        //终极数组遍历形式
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
                
    }
}

数组的案例

数组遍历-求和

需求:某部门5名员工的销售额分别是16,26,36,6,100,请计算他们部门的销售总额。
public class ArrayDemo1 {
    public static void main(String[] args) {
       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);   //184
    }
}

数组求最值

需求:15,180,890,8977,56
public class ArrayDemo1 {
    public static void main(String[] args) {
      int[] money ={15,180,890,8977,56};

      //定义一个变量储存最大值元素,建议同一个元素作为参考值
        int max =money[0];

        //遍历数组的每个元素,依次与最大值的数据比较,若较大,则替换
        for (int i = 0; i < money.length; i++) {
            if(money[i]>max){
                max =money[i];
            }
        }
        //输出并储存最大值即可
        System.out.println("数组的最大值是:"+max);  
    }
}

猜字数游戏

开发一个幸运小游戏,游戏规则如下:
游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
>未猜中提示:"未命中",并继续猜测
>猜中提示:"运气不错,猜中了",并输出该数据第一次出现的位置,且输出全部5个数据,最
终结束本游戏。
import java.util.Random;
import java.util.Scanner;

public class ArrayDemo1 {
    public static void main(String[] args) {
      //定义一个动态初始化的数组
        int[] date =new int[5];

        //动态生成的随机数并存到数组中去
        Random r = new Random();
        for (int i = 0; i < date.length; i++) {
            date [i] =r.nextInt( 20) + 1;

            //使用一个死循环让用户猜测
            Scanner sc = new Scanner (System.in);
            OUT:
            while (true){
                System.out.println("请你输入一个1~20的整数进行猜测");
                int guess =sc.nextInt();

                //遍历数组中的每一个数据,看是否有猜测数据与数据相同,相同则中了,
                for (int J = 0; J < date.length; J++) {
                    if (date[J] ==guess) {
                        System.out.println("恭喜你,你猜中的数据是:" + J);
                        break OUT;
                    }

                }
                System.out.println("当前数据不存在,请重新猜测!");
            }
            //输出数组的全部元素
            for (int k = 0; k < date.length; k++) {
                System.out.println(date[k]+"\t");
            }
        }
    }
}

随机排名

需求
某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
22  33  35  13  88
13  35  88  33  22
import java.util.Scanner;
import java.util.Random;

public class ArrayDemo1 {
    public static void main(String[] args) {
        int[] codes =new int[5];
        //定义一个循环,循环5次,依次输入一个工号存在对应的位置
        Scanner sc =new Scanner (System.in);
        for (int i = 0; i < codes.length; i++) {
            //录入工号
            System.out.println("请输入第"+(i+1)+"个员工的工号:");
            int code =sc.nextInt();
            //存到数组中去
            codes[i] =code;
        }
      //遍历数组中的每一个元素,然后随机一个索引出来,让该元素与随机索引的元素值交换
        
           Random r = new Random();
            for (int j = 0; j < codes.length; j++) {
                int index =r.nextInt(codes.length);
                
                //定义一个临时变量储存index的值
                int temp =codes[index];
                codes[index] =codes[j];
                codes[j] =temp;
                
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ananan__2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值