Java之数组的基本使用

简介: Java之数组的基本使用

1. 为什么需要数组

  • 一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是多少?平均体重是多少? 请你编一个程序。 Array01.java
  • 思路分析:

定义 6 个变量 , 加起来 总体重, 求出平均体重.引出 -> 数组

1.1 数组介绍

  • 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型

即:数(数据)组(一组)就是一组数据

1.2 数组快速入门

Array01.java

  • 比如,我们可以用数组来解决上一个问题。
  • 思路分析:
  1. 我们可以通过 hens[下标] 来访问数组的元素,下标是从 0 开始编号的比如第一个元素就是 hens[0],第2个元素就是 hens[1] , 依次类推
  2. 通过for就可以循环的访问 数组的元素/值
  3. 使用一个变量 totalWeight 将各个元素累积
    double[] hens = {3, 5, 1, 3.4, 2, 50};
    double totalWeight = 0;
    for (int i = 0; i < 6; i++) {
        System.out.println("第" + (i+1) + "个元素的值=" + hens[i]);
        totalWeight += hens[i];
    }
    System.out.println("总体重=" + totalWeight + "平均体重=" + (totalWeight / hens.length));
  • 因为数组是从 0 开始的下标,所以 for 循环中 i = 0 时表示数组下标有 0,1,2,3,4,56个元素可以遍历(因为数组中有6个元素),所以写成 i < 5(等价于数组中有6个元素)也可以写为 i <= 5,为了跟清晰明了,一般写为 i < 6

在这里插入图片描述

  • 如果需要增加 鸡的个数时,只要改动数组就行,其他变量都不需要改动。

2. 数组的使用

在这里插入图片描述

  • 步骤

    1. 创建一个 double 数组,大小 5

(1) 第一种动态分配方式

    double scores[] = new double[5];

(2) 第2种动态分配方式, 先声明数组,再 new 分配空间

    double scores[] ; //声明数组, 这时的 scores 是 null
    scores = new double[5]; // 分配内存空间,可以存放数据
  1. 循环输入
    scores.length 表示数组的大小/长度
    double[] scores = new double[5];
    Scanner sc = new Scanner(System.in);
    for (int i = 0; i < scores.length; i++) {
        System.out.println("请输入第" + (i + 1) + "个元素的值");
        scores[i] = sc.nextDouble();
    }
    System.out.println("==数组元素的输出情况:==");
    for (int i = 0; i < 5; i++) {
        System.out.println("请输入第" + (i + 1) + "个元素的值" + scores[i]);
    }

在这里插入图片描述

2.1 动态初始化数组

  • 先声明数组

语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;

int a[]; 或者 int[] a;
  • 创建数组

语法: 数组名=new 数据类型[大小];

a=new int[10];
  • 案例演示

2.2 数组静态初始化

在这里插入图片描述

3. 数组的使用注意事项和细节

1) 数组是多个相同类型数据的组合,实现对这些数据的统一管理

int[] arr1 = {1, 2, 3, 60,"hello"};//String ->int 类型不匹配
double[] arr2 = {1.1, 2.2, 3.3, 60.6, 100};//int ->doubl 可以通过,满足自动类型转换

2) 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。

String[] arr3 = {"北京","jack","milan}

3) 数组创建后,如果没有赋值,有默认值

int 0,short 0, byte 0, long 0, float 0.0,double 0.0,
char \u0000,boolean false,String null
  • 举例:
    short[] arr4 = new short[3];
    System.out.println("==数组arr4==");
    for (int i = 0; i < arr4.length; i++) {
        System.out.println(arr4[i]);
    }

在这里插入图片描述

4) 使用数组的步骤: 1. 声明数组并开辟空间 2. 给数组各个元素赋值 3. 使用数组

5) 数组的下标是从 0 开始的。

6) 数组下标必须在指定范围内使用,否则报:下标越界异常,比如
int [] arr=new int[5]; 则有效下标为 0-4,即数组的的下标最小为 0,最大为 数组长度-1 (5-1=4)
7) 数组属引用类型,数组型数据是对象(object)

4. 数组的应用案例

1) 创建一个 char 类型的 26 个元素的数组,分别 放置'A'-'Z'。使用 for 循环访问所有元素并打印出来。提示:char 类型数据运算 'A'+2 -> 'C'
ArrayExercise01.java

  • 思路分析

    1. 定义一个 数组 char[] chars = new char[26]
    2. 因为 'A' + 1 = 'B' 类推,所以使用for来赋值
    3. 使用for循环访问所有元素
    char[] chars = new char[26];
    for( int i = 0; i < chars.length; i++) {//循环26次
        //chars 是 char[] 
        //chars[i] 是 char
        chars[i] = (char)('A' + i); //'A' + i 是int , 需要强制转换
    }
    
    //循环输出
    System.out.println("===chars数组===");
    for( int i = 0; i < chars.length; i++) {//循环26次
        System.out.print(chars[i] + " ");
    }

在这里插入图片描述

  1. 请求出一个数组 int[]的最大值 {4,-1,9, 10,23},并得到对应的下标。 ArrayExercise02.java
  • 思路分析
  1. 定义一个int数组 int[] arr = {4,-1,9, 10,23};
  2. 假定 max = arr[0] 是最大值 , maxIndex=0;
  3. 从下标 1 开始遍历arr, 如果max < 当前元素,说明max 不是真正的最大值, 我们就

max=当前元素; maxIndex=当前元素下标

  1. 当我们遍历这个数组arr后 , max就是真正的最大值,maxIndex最大值对应的下标
    int[] arr = {4,-1,9,10,23};
    int max = arr[0];//假定第一个元素就是最大值
    int maxIndex = 0; //
    
    for(int i = 1; i < arr.length; i++) {//从下标 1 开始遍历arr
    
        if(max < arr[i]) {//如果max < 当前元素
            max = arr[i]; //把 max 设置成 当前元素
            maxIndex = i; 
        }
    } 
    //当我们遍历这个数组arr后 , max就是真正的最大值,maxIndex最大值下标
    System.out.println("max=" + max + " " + "maxIndex=" + maxIndex);

在这里插入图片描述

目录
相关文章
|
16小时前
|
存储 Java 索引
个人笔记—Java基础—数组
该内容是关于数组的介绍。数组是一种容器,用于存储同类型的多个值。初始化有静态和动态两种方式:静态初始化是在创建时直接指定元素,有完整和简写格式;动态初始化则只指定类型和长度,不给定具体元素。访问数组元素通过索引,从0开始,修改元素是`数组名[索引] = 值`,数组长度是`数组名.length`。遍历数组通常用for循环。内存分配上,类信息和静态数据存放在方法区,栈内存负责方法执行和局部变量,堆内存用于new出的对象和数组,有默认初始值。
20 0
|
17小时前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
16小时前
|
搜索推荐 算法 Java
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
【5月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
10 0
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
|
16小时前
|
存储 Java
滚雪球学Java(28):轻松掌握数组:访问和遍历技巧
【5月更文挑战第3天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
11 2
滚雪球学Java(28):轻松掌握数组:访问和遍历技巧
|
16小时前
|
存储 Java ice
【Java开发指南 | 第十六篇】Java数组及Arrays类
【Java开发指南 | 第十六篇】Java数组及Arrays类
8 3
|
16小时前
|
存储 算法 搜索推荐
滚雪球学Java(27):从零开始学习数组:定义和初始化
【5月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
9 3
|
16小时前
|
Java 索引
Java中数组详解
Java中数组详解
45 19
|
16小时前
|
Java
解析java中的数组
解析java中的数组
13 3
|
16小时前
|
存储 安全 Java
Java一分钟之-数组的创建与遍历
【5月更文挑战第8天】本文介绍了Java中数组的基本概念、创建与遍历方法,强调了类型匹配和数组越界问题。示例展示了如何创建整数数组并初始化元素,同时提供了避免数组越界的策略。对于遍历,文章提到了for循环和增强型for循环,并给出了防止错误的建议,如正确声明类型、初始化数组、安全索引操作及使用合适的数据结构。遵循这些指导可帮助开发者有效管理Java数组并减少错误。
18 0
|
17小时前
|
存储 Java 索引
Java数组
Java数组
24 0