JavaSE——数组(1/2)-数组的定义和访问(静态初始化数组、动态初始化数组、案例练习)

目录

数组的定义和访问

静态初始化数组

数组的访问

数组的遍历

案例练习

动态初始化数组

案例练习


数组是什么

  • 数组就是一个容器,用来存储一批同种类型的数据

例子:

20,10,80,60,90

int[ ] arr = {20,10,80,60,90};

牛二,西门,全蛋

String names = {"牛二","西门","全蛋"};

数组的应用让我们省去了大量的变量定义,使得代码更加简洁和逻辑清晰。

数组的定义和访问

静态初始化数组

静态初始化数组即定义数组的时候直接给数组赋值

静态初始化数组的格式:

完整格式

数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2,元素3,...};

int[] ages = new int[]{1,2,3,4,5};

double scores = new double[]{89.9,99.9,85.7};

简化格式

数据类型[] 数组名 = {元素1,元素2,元素3,...};

int[] ages = {1,2,3,4,5};

注意

  • "数据类型[] 数组名" 也可写成 "数据类型 数组名[]"
  • 什么类型的数组只能存放什么类型的数据。 

数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型。

数组的访问

数组在计算机中的存储:

访问数组:数组名[索引] 

取值

System.out.println(arr[0]);  //12

赋值 

arr[2] = 100;
System.out.println(arr[2]); //100

数组的长度属性:length 

//获取数组的长度(就是数组元素的个数)
System.out.println(arr.length);  //3

数组的最大索引:

System.out.println(arr.length - 1)  

 (前提是数组中要有元素)


1.如何访问数组的元素?

  • 数组名称[索引]

2.如何访问数组的长度?

  • 数组名称.length

3.数组的最大索引是多少?

  • 数组名.length-1   //前提:元素个数大于0

4.如果访问数组时,使用的索引超过了数组最大索引会出什么问题?

  • 执行程序时会出bug,出现一个索引越界的异常提示。

数组的遍历

什么是遍历?

  • 遍历:就是一个一个数据的访问。

为什么要遍历数组?

  • 求和
  • 元素搜索
  • 找极值

如何遍历?

int[] arges = {1,2,3,4,5};
for(int i = 0; i < arr.length; i++)
{
    System.out.println(arr[i]);
}

案例练习

需求:

  • 某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。
  1. 把这5个数据拿到程序中去 ---> 使用数组
    int[] money ={16, 26, 36, 6, 100};
  2. 遍历数组中的每个数据,然后在外面定义求和变量把他们累加起来。
public static void main(String[] args)
{
    //1.定义一个数组存储5名员工的销售额
    int[] meney = {16,26,36,6,100};

    //2.定义一个变量用于累加求和
    int sum = 0;

    //3.遍历这个数组
    for(int i = 0; i < money.length; i++)
    {
        sum += meney[i];
    }
    System.out.println("员工的销售总额:" + sum);
}

动态初始化数组

动态初始化数组即定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度。

动态初始化格式:

数据类型[] 数组名 = new 数据类型 [长度];

int[] arr = new int[3];

再进行赋值

arr[0] = 10;
System.out.println(arr[0]);  //10 

注意:

静态初始化和动态初始化数组的写法是独立的,不可以混用。

动态初始化数组元素默认值规则:

数据类型明细默认值
基本类型byte、short、char、in、long0
float、double0.0
booleanfalse
引用类型类、接口、数组、Stringnull

1、动态初始化数组的写法是什么样的?有什么特点?

数据类型[] 数组名 = new 数据类型[长度];

int[] ages = new int[4];

2.动态初始化数组后元素的默认值是什么样的?

  • byte、short、int、char、long类型数组的元素默认值都是0
  • float、double类型数组元素的默认值都是0.0
  • boolean类型数组的元素默认值是false,String类型数组的元素的默认值是null

3、两种数组定义的方法各自适合什么业务场景?

  • 动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景。
  • 静态初始化:适合一开始就知道要存入哪些元素值的业务场景。

案例练习

需求:

  • 某歌唱比赛,需要开发一个系统:可以录入六名评委的打分,录入完毕后立即输出平均分做为选手得分。
  1. 六名评委的打分是后期录入的,一开始不知道具体的分数,因此定义一个动态初始化的数组存分数。
    double[] scores = new double[6];
  2. 遍历数组中的每个位置,每次提示用户录入一个评委的分数,并存入到数组对应的位置。
  3. 遍历数组中的每个元素进行求和,最终算出平均分打印出来即可。
import java.util.Scanner;

public class ArrayTest
{
    public static void main(String[] args)
    {
        //1.定义一个动态初始化数组,存储六个评委的打分
        double[] scores = new double[6];

        Scanner sc = new Scanner(System.in);
        int sum = 0;
        
        //2.遍历数组,录入评委的分数,存入数组中
        int i;
        for(i = 0; i < scores.length; i++)
        {
            System.out.println("请您输入当前第" + (i + 1) + "个评委的分数:");
            double score = sc.nextDouble();
            scores[i] = score;
            //对分数进行求和
            sum += scores[i];
        }
        System.out.println("选手最终得分是:" + sum / scores.length);
    }
}

END


学习自:黑马程序员——JavaSE课程 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/378346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32/C51开发环境搭建(KeilV5安装)

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统&#xff0c;与汇编相比&#xff0c;C语言在功能上、结构性、可读性、可维护性上有明显的优势&#xff0c;因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等…

第59讲订单数据下拉实现

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** 订单查询 type值 0 全部订单 1待付款 2 待收货 3 退款/退货* param type* return*/RequestMapping("/list")public R list(Integer type,Integer page,Integer pageSize){System.out.pri…

【C++基础入门】七、指针(定义和使用、所占内存空间、空指针和野指针、const关键字修饰指针、指针和数组、指针和函数)

七、指针 7.1 指针的基本概念 指针的作用&#xff1a; 可以通过指针间接访问内存 内存编号是从0开始记录的&#xff0c;一般用十六进制数字表示可以利用指针变量保存地址 7.2 指针变量的定义和使用 指针变量定义语法&#xff1a; 数据类型 * 变量名&#xff1b; 示例&…

统一身份认证系统架构设计与实践总结

随着互联网的快速发展和应用的普及&#xff0c;人们在各个网站和应用上需要不同的账号和密码进行身份认证。为了解决这个问题&#xff0c;统一身份认证系统应运而生。本文将总结统一身份认证系统的架构设计与实践经验&#xff0c;帮助读者了解如何设计和实现一个高效、安全的统…

一、OpenAI API介绍

Open AI API可以应用到任何的业务场景。 文本生成 创造助理 嵌入数据 语音转化 图片生成 图片输入 1. 核心概念 1.1 Text generation models OpenAI 的文本生成模型(通常被称为generative pre-trained transformers 模型简称&#xff1a;GPT),有GPT-4和G…

《学成在线》微服务实战项目实操笔记系列(P1~P83)【上】

史上最详细《学成在线》项目实操笔记系列【上】&#xff0c;跟视频的每一P对应&#xff0c;全系列12万字&#xff0c;涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳&#xff0c;参考这篇&#xff0c;相信会带给你极大启发。 一、前期准备 1.1 项目介绍 P2 To C面向…

Eclipse 安装使用ABAPGit

Eclipse->Help->Install New software 添加地址 https://eclipse.abapgit.org/updatesite/ 安装完成打开 选择abapGit repositories,先添加仓库 点下图添加自己仓库 如图添加仓库地址 添加完仓库后&#xff0c;点击我的仓库 右键选中行&#xff0c;可以进行push和pu…

代码随想录算法训练营第42天 | 01背包理论基础 416.分割等和子集

01背包理论基础 问题定义&#xff1a;有n件物品和一个能装重量为w的背包&#xff0c;第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i]。每件物品只能用一次&#xff0c;求解将哪些物品装入背包获得的总价值最大。dp数组含义&#xff1a;dp[i][j] 表示从下标为 [0…

springboot基础案例(二)

文章目录 前言一.需求分析: 分析这个项目含有哪些功能模块二.库表设计(概要设计): 1.分析系统有哪些表 2.分析表与表关系 3.确定表中字段(显性字段 隐性字段(业务字段))2.1 创建一个库: ems-thymeleaf2.2 创建 2张表三.编码(环境搭建)1.创建一个springboot项目 项目名字: ems-t…

Ubuntu环境下安装部署Nginx(有网)

本文档适用于在Ubuntu20.04系统下部署nginx 一、使用apt-get命令安装nginx 注&#xff1a;以下命令都是在root用户下使用 1. 检查是否存在apt命令 apt –version 说明&#xff1a;出现版本号就说明当前环境存在apt 2. 更新apt命令 apt update 3. 安装nginx apt-get in…

【保姆级教程|YOLOv8改进】【7】多尺度空洞注意力(MSDA),DilateFormer实现暴力涨点

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Minecraft 上 An Existing Connection Was Forcibly Closed by the Remote Host 错误

本篇文章介绍了使用 Minecraft 时出现远程主机错误强制关闭现有连接的原因和解决方案。 Minecraft 上 Java.IO.IOException: An Existing Connection Was Forcibly Closed by the Remote Host 原因 Minecraft 是一款使用 Java 开发的流行游戏。 由于其流行&#xff0c;服务器…

jxls 2.4.5 —— 动态导出excel 表头与数据

文章目录 前言依赖引入制作导出模板测试类导出效果注意事项 前言 再之前的博客中&#xff0c;介绍了jxls的基础使用。但导出表头属于写死的&#xff0c;并未采取动态渲染。 本次进行动态渲染操作&#xff0c;动态渲染表头和填充数据。 依赖引入 springboot测试项目中&#…

AdaBoost算法

Boosting是一种集成学习方法&#xff0c;AdaBoost是Boosting算法中的一种具体实现。 Boosting方法的核心思想在于将多个弱分类器组合成一个强分类器。这些弱分类器通常是简单的模型&#xff0c;比如决策树&#xff0c;它们在训练过程中的错误会被后续的弱分类器所修正。Boosti…

多元回归分析:理论与应用

多元回归分析是一种统计方法&#xff0c;用于研究两个或多个自变量&#xff08;解释变量&#xff09;与一个因变量&#xff08;响应变量&#xff09;之间的关系。这种分析允许研究者评估多个因素对结果变量的影响&#xff0c;是社会科学、经济学、生物医学和工程等多个领域中常…

SolidWorks学习笔记——入门知识1

目录 1、固定最近文档 2、根据需要自定义菜单栏 3、根据需要增添选项卡 4、命令搜索框 5、鼠标右键长按快速切换视图 6、鼠标笔势 自定义鼠标笔势 1、固定最近文档 图1 固定最近文档 2、根据需要自定义菜单栏 图2 根据需要自定义菜单栏 3、根据需要增添选项卡 图3 根据…

Linux介绍和命令使用

目录 目录 一、Linux简介 1.1 主流操作系统 1.2 Linux 发展历史 1.3 Linux系统版本 二、Linux安装 三、Linux 目录结构 四、Linux常用命令 4.1 基础常用命令说明 4.2 Linux 命令使用技巧 4.3 Linux 命令格式 4.4 进阶重点常用命令 4.4.1 拷贝移动命令 4.4.2 打包…

09 AB 10串口通信发送原理

通用异步收发传输器&#xff08; Universal Asynchronous Receiver/Transmitter&#xff0c; UART&#xff09;是一种异步收发传输器&#xff0c;其在数据发送时将并行数据转换成串行数据来传输&#xff0c; 在数据接收时将接收到的串行数据转换成并行数据&#xff0c; 可以实现…

springboot项目热部署实现(Spring Boot DevTools方式)

文章目录 Spring Boot DevTools简介Spring Boot DevTools原理spring Boot Devtools优缺点Spring Boot DevTools集成步骤第一步&#xff1a;添加maven依赖第二步&#xff1a;IDEA热部署配置 Spring Boot DevTools简介 Spring Boot DevTools是Spring Boot提供的一个开发工具&…

二维数组的使用

一、二维数组的使用 动态初始化静态初始化 1、动态初始化 2、静态初始化
最新文章