Java基础入门篇——数组初识

一、数组

1.假设某公司有100个员工,需要统计某公司员工的工资情况,首先需要声明100个变量来分别记每个员工的工资,那么如果按照之前的做法,可能定义的结构如下所示:


int a1,a2,a3,......a100;

要求你输出这100个员工的工资,意味着你要写System.out.println()语句100次。这样的话就显得很麻烦,所以我们需要用数组解决。

2.数组指的是一组数据的集合,数组中每个数据叫做元素。在数组可以存放任意类型的数据,但是同一个数组存放的元素类型需要一致。

3.数组的定义如下所示:


int[] a=new int[100];

上面这个数组的定义相当于在内存定义了100个int类型的变量,第1个变量的名称是a[0],第2个变量的名称是a[1],第3个变量名称是a[2],直到第100个变量的名称是a[99]。这些变量的初始值默认为0。


int[] a;//定义一个int[]类型的变量a
a=new int[100];//创建长度为100的数组

上面这个数组的定义一个int[]类型的变量a,变量a会占用一块内存单元格,它还没有分配初始的值。

如下图所示:

a=new int[]创建一个数组,把数组的地址赋值给变量x,内存状态就发生了变化。

如下所示:

4.通过一个案例看看如何定义数组和访问数组的元素、长度


public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a;//声明一个int[]类型变量a
a=new int[3];//创建数组为3的长度
System.out.println("a[0]="+a[0]);//访问数组的第1个元素
System.out.println("a[1]="+a[1]);//访问数组的第2个元素
System.out.println("a[2]="+a[2]);//访问数组的第3个元素
System.out.println("数组的长度为:"+a.length);//数组的长度
}

输出的结果是:


a[0]=0
a[1]=0
a[2]=0
数组的长度为:3

我们分析一下上面的代码,首先是声明一个int[]类型变量a,然后创建数组长度为3,它是如何访问数组的元素的呢?通过a[0]访问数组的第1个元素,因为数组下标由0开始,最大下标是数组元素个数-1。a.length属性是访问数组的长度。

二、数组的静态初始化

1.什么是数组的静态初始化

定义数组时,为数组的每个元素赋值就叫做数组的静态初始化。

2.数组的静态初始化两种方式


类型[] 数组名 = new 类型[]{值1, 值2, ……};  
类型[] 数组名 = {值1, 值2, ……};

3.数组的静态初始化如何定义和访问数组的值

如下所示:


public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,2,3};//静态初始化
System.out.println("a[0]="+a[0]);//访问数组的第1个元素
System.out.println("a[1]="+a[1]);//访问数组的第2个元素
System.out.println("a[2]="+a[2]);//访问数组的第3个元素
System.out.println("数组的长度为:"+a.length);//数组的长度
}

输出的结果为:


a[0]=1
a[1]=2
a[2]=3
数组的长度为:3

使用静态初始化数组给每个元素进行赋值,分别是1、2、3

三、数组的动态初始化

1.什么是数组的动态初始化

定义数组由系统自动给元素赋初始值,我们就叫做数组的动态初始化。

2.动态初始化的方式

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

3.动态初始化只需要指定数组的长度,系统自动赋初始值。分配初始值的规则:

boolean数据类型它的系统默认值为false;

byte数据类型它的系统默认值为0;

char数据类型它的系统默认值为’/u0000’;

short数据类型它的系统默认值为0;

int数据类型它的系统默认值为0;

long数据类型它的系统默认值为0L;

float数据类型它的系统默认值为0.0f;

double数据类型它的系统默认值为0.0;

4.动态初始化如何定义和访问数组的元素

例如:


public static void main(String[] args) {// TODO Auto-generated method stubint[] a=new int[4];//动态初始化System.out.println("a[0]="+a[0]);//访问数组的第1个元素System.out.println("a[1]="+a[1]);//访问数组的第2个元素System.out.println("a[2]="+a[2]);//访问数组的第3个元素System.out.println("a[3]="+a[3]);//访问数组的第3个元素System.out.println("数组的长度为:"+a.length);//数组的长度
}

输出的结果:

a[0]=0
a[1]=0
a[2]=0
a[3]=0
数组的长度为:4

四、总结

本文介绍了数组定义、数组的静态初始化、数组的动态初始化。详细介绍了数组的内容,数组的定义和访问数组的元素、长度通过图片和案例结合。静态初始化是定义数组,为每个元素赋值。动态初始化是由于系统会自动给它们赋值。静态初始化和动态初始化详细的讲解这两个用法,通过图片和案例结合来理解这用法。希望大家通过本文的学习,对你有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android系统组件——AMS,App启动中的AMS流程

AMS(Activity Manager Service)是Android系统中非常重要的一个组件,负责管理应用程序的生命周期、进程调度以及任务栈的管理等任务。本文将从AMS的原理、数据结构、SystemServer加载AMS以及App启动中的AMS流程等方面进行详细介绍,…

【LeetCode】105. 从前序与中序遍历序列构造二叉树

作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 105. 从前序与中序遍历序列构造二叉树 力扣 题目描述: 给定两个整数数组 preord…

小结:基于 JavaWeb 的宠物店管理系统

宠物店管理系统 系统介绍系统展示登录界面用户注册页面 店主主界面宠物信息管理页面修改宠物信息 宠物出入库管理页面宠物订单查询页面宠物账单查看页面用户信息管理页面修改用户信息 用户主界面宠物订购页面用户订购支付页面 个人资料编辑页面个人订单查看页面 系统说明开发环…

【力扣每日一题】2023.8.11 矩阵对角线元素的和

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个矩阵,让我们把矩阵对角线上的元素都加起来返回。 那么矩阵的对角线是有两条的,一条是从左上到右下…

CSS3 中新增了哪些常见的特性?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 圆角(Border Radius)⭐ 渐变(Gradients)⭐ 阴影(Box Shadow)⭐ 文本阴影(Text Shadow)⭐ 透明度(Opacity)⭐ 过渡&…

Azure Kinect DK + ROS1 Noetic使用教程

作者: Herman Ye Galbot Auromix 版本: V1.0 测试环境: Ubuntu20.04 更新日期: 2023/08/08 注1: 本文内容中的硬件由 Galbot 提供支持。 注2: Auromix 是一个机器人爱好者开源组织。 注3: 本文在…

当前服务器版本不支持该功能,请联系经销商升级服务器 - - 达梦数据库报错

当前服务器版本不支持该功能,请联系经销商升级服务器 - - 达梦数据库报错 环境介绍1 搭建测试环境2 报错内容3 标准版介绍 环境介绍 某项目使用标准版数据库中,使用insert into 正常操作表,插入数据时报错,表为普通表。 1 搭建测…

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后,CMD测试安装是否成功:mvn -v 提示: mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量: MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…

2.若依前后端分离版第一个增删查改

1.介绍 若依提供了代码生成功能,单表的CRUD可以直接用若依框架提供的代码生成进行创建。 2.实现 2.1 在数据库创建业务表test_teacher 2.2 生成代码 运行系统,进入菜单[系统工具]-》[代码生成],点击导入按钮,选择需要生成代码的表进行导…

UML—浅谈常用九种图

目录 概述: 1.用例图 2.静态图 3.行为图: 4.交互图: 5.实现图: 概述: UML的视图是由九种视图组成的,分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、实施图。我们可以根据这9种图的功能和实现的目的…

JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

1.JavaBean 实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化。 必须有对应的get/set方法 用来和数据库的字段做映射 ORM; ORM:对象关系映射 表--->类 字段-->属性 行记录---->对象 2.<jsp&#xff1a;useBean 标签 3. MVC三层架构 4. Filter …

如何调教让chatgpt读取自己的数据文件(保姆级图文教程)

提示&#xff1a;如何调教让chatgpt读取自己的数据文件(保姆级图文教程) 文章目录 前言一、如何投喂自己的数据&#xff1f;二、调教步骤总结 前言 chatgpt提示不能读取我们提供的数据文件&#xff0c;我们应该对它进行调教。 一、如何投喂自己的数据&#xff1f; 让chatgpt读…

华为Mate30报名鸿蒙 HarmonyOS 4.0.0.108 系统更新

华为 Mate 30 系列于 2019 年 11 月 1 日上市&#xff0c;包括 Mate 30 4G / 5G、Mate 30 Pro 4G / 5G、保时捷设计版 Mate30 共五款机型。华为 Mate 30 系列 5G 版搭载麒麟 990 5G 处理器&#xff0c;同时支持 SA 及 NSA 5G 双模&#xff0c;适配三大运营商的 5G / 4G / 3G / …

以mod_jk方式整合apache与tomcat(动静分离)

前言&#xff1a; 为什么要整合apache和tomcat apache对静态页面的处理能力强&#xff0c;而tomcat对静态页面的处理不如apache&#xff0c;整合后有以下好处 提升对静态文件的处理性能 利用 Web 服务器来做负载均衡以及容错 更完善地去升级应用程序 jk整合方式介绍&#…

【构建卷积神经网络】

构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别&#xff0c;需重新设计&#xff0c;训练模块基本一致 全连接层&#xff1a;batch784&#xff0c;各个像素点之间都是没有联系的。 卷积层&#xff1a;batch12828&#xff0c;各个像素点之间是有联系的。 impor…

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能&#xff0c;如下为Visual Studio 2022的该功能界面&#xff1a; 图 1 图 2 当在Visual Studio 2022打开很多文件时&#xff0c;可以按照图1、图2所示找到自…

Golang struct 结构体指针类型 / 结构体值类型

struct类型的内存分配机制 结构体变量之间的赋值是值拷贝。 type stu struct {Name stringSlice []stringMap1 map[string]string }func main() {s : stu{}s.Slice make([]string, 6)s.Slice[1] "ssss"s.Slice[2] "xxxx"s.Map1 make(map[string]stri…

基础堆排序

目录 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 基础堆排序

【Opencv入门到项目实战】(十):项目实战|文档扫描|OCR识别

所有订阅专栏的同学可以私信博主获取源码文件 文章目录 1.引言1.1 什么是光学字符识别 (OCR)1.2 应用领域 2.项目背景介绍3.边缘检测3.1 原始图像读取3.2 预处理3.3 结果展示 3.轮廓检测4.透视变换5.OCR识别5.1 tesseract安装5.2 字符识别 1.引言 今天我们来看一个OCR相关的文…

桂林小程序https证书

现在很多APP都相继推出了小程序&#xff0c;比如微信小程序、百度小程序等&#xff0c;这些小程序的功能也越来越复杂&#xff0c;不可避免的和网站一样会传输数据&#xff0c;因此小程序想要上线就要保证信息传输的安全性&#xff0c;也就是说各种类型的小程序也需要部署https…