Java零基础-数组的初始化

news/2024/7/27 12:11:03/文章来源:https://blog.csdn.net/weixin_66592566/article/details/135253607

哈喽,各位小伙伴们,你们好呀,我是喵手。

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

在Java开发中,数组是一种重要的数据结构,它可以存储一组相同类型的数据。数组的初始化是使用数组元素的默认值或者指定初始值来给数组分配内存并赋值的过程。JavaSE提供了多种方式来初始化数组,本文将介绍这些方式的特点和用法。

摘要

本文主要介绍了JavaSE中数组的初始化方法,包括使用默认值初始化、使用直接赋值初始化、使用循环赋值初始化以及使用匿名数组初始化。通过对每种初始化方式的源代码解析和应用场景案例的分析,我们可以了解到它们的优缺点,并给出了相应的类代码方法介绍和测试用例。

简介

在Java中,数组是一种特殊的对象,它能够存储多个相同类型的数据。数组的初始化是为数组分配内存并赋初始值的过程。在JavaSE中,可以使用多种方式进行数组的初始化,包括使用默认值初始化、使用直接赋值初始化、使用循环赋值初始化以及使用匿名数组初始化。

源代码解析

使用默认值初始化

在Java中,数组的元素会根据其类型自动分配默认值。例如,对于整型数组,元素的默认值为0;对于布尔型数组,元素的默认值为false。下面是使用默认值初始化数组的示例代码:

int[] numbers = new int[5];

在上述代码中,我们创建了一个长度为5的整型数组numbers,并且每个元素都被自动初始化为0。

使用直接赋值初始化

除了使用默认值初始化数组,还可以直接为数组元素赋值进行初始化。下面是使用直接赋值初始化数组的示例代码:

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

在上述代码中,我们创建了一个整型数组numbers,并将1、2、3、4和5分别赋值给数组的每个元素。

使用循环赋值初始化

有时候,我们需要根据一定的规律来初始化数组,这时可以使用循环赋值的方式。下面是使用循环赋值初始化数组的示例代码:

int[] numbers = new int[5];
for (int i = 0; i < numbers.length; i++) {numbers[i] = i + 1;
}

在上述代码中,我们创建了一个长度为5的整型数组numbers,并通过循环将1、2、3、4和5赋值给数组的每个元素。

测试代码分析:

  该代码创建了一个大小为5的整数数组numbers,并使用for循环为数组中的每个元素赋值。其中,循环变量i从0开始,每次循环都将i + 1的值赋给numbers数组中的相应位置。最终,numbers数组的元素值为1, 2, 3, 4, 5。

使用匿名数组初始化

除了以上的初始化方式,还可以使用匿名数组进行初始化。匿名数组是指在创建数组的同时为其赋值,而不给数组起名字。下面是使用匿名数组初始化数组的示例代码:

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

在上述代码中,我们创建了一个整型数组numbers,并将1、2、3、4和5分别赋值给数组的每个元素。

应用场景案例

使用默认值初始化

使用默认值初始化数组适用于不需要特定初始值的情况。例如,在创建一个用于计数的数组时,可以使用默认值初始化,如下所示:

int[] counts = new int[10];

在上述代码中,我们创建了一个长度为10的整型数组counts,用于存储每个数字出现的次数,默认每个元素的值为0。

使用直接赋值初始化

使用直接赋值初始化数组适用于已知初始值的情况。例如,创建一个包含特定元素的数组时,可以使用直接赋值初始化,如下所示:

String[] fruits = {"apple", "banana", "orange"};

在上述代码中,我们创建了一个字符串数组fruits,并将"apple"、"banana"和"orange"分别赋值给数组的每个元素。

使用循环赋值初始化

使用循环赋值初始化数组适用于需要根据一定规律进行初始化的情况。例如,创建一个斐波那契数列的数组时,可以使用循环赋值初始化,如下所示:

int[] fibonacci = new int[10];
fibonacci[0] = 0;
fibonacci[1] = 1;
for (int i = 2; i < fibonacci.length; i++) {fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}

在上述代码中,我们创建了一个长度为10的整型数组fibonacci,并通过循环赋值的方式初始化斐波那契数列。

测试代码分析:

  这段代码是用来生成斐波那契数列的前10个元素的数组。斐波那契数列是一个由前两个元素开始,每个后续元素都是前两个元素之和的数列。
代码首先创建一个大小为10的int数组,用于存储斐波那契数列的元素。然后,将数组的第一个元素设置为0,第二个元素设置为1,作为数列的起始元素。
接下来,使用一个for循环从索引2开始遍历数组。在每次循环中,通过将前两个元素相加来计算当前元素的值,并将其存储在数组中的当前索引位置。这样,循环会一直执行到最后一个元素,即索引9为止。
最终,数组中的元素将分别为0、1、1、2、3、5、8、13、21和34,对应斐波那契数列的前10个元素。

使用匿名数组初始化

使用匿名数组初始化适用于临时需要使用的数组。例如,在调用某个方法时需要传递一个数组参数,可以使用匿名数组进行初始化,如下所示:

doSomething(new int[]{1, 2, 3, 4, 5});

在上述代码中,我们使用匿名数组初始化了一个整型数组,并将其作为参数传递给doSomething方法。

优缺点分析

使用默认值初始化的优缺点

优点:简单方便,适用于不需要特定初始值的情况。

缺点:无法自定义初始值,有时可能需要额外的操作来完成初始化。

使用直接赋值初始化的优缺点

优点:代码简洁明了,适用于已知初始值的情况。

缺点:不适用于大规模数组的初始化,需要一一指定每个元素的值。

使用循环赋值初始化的优缺点

优点:可以根据规律进行初始化,适用于需要根据一定规律进行初始化的情况。

缺点:需要额外的循环操作来完成初始化,效率较低。

使用匿名数组初始化的优缺点

优点:适用于临时需要使用的数组,不需要为数组起名,代码简练。

缺点:无法重复使用同样的初始化数组,每次都需要重新创建。

类代码方法介绍

默认值初始化

int[] numbers = new int[5];

上述代码中,我们通过使用new运算符和数组长度来创建了一个长度为5的整型数组,并自动为每个元素分配了默认值。

直接赋值初始化

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

上述代码中,我们使用花括号将初始值包裹起来,并将其直接赋给数组对象,实现了数组的直接赋值初始化。

循环赋值初始化

int[] numbers = new int[5];
for (int i = 0; i < numbers.length; i++) {numbers[i] = i + 1;
}

上述代码中,我们使用循环结构和索引变量来对数组元素进行赋值,实现了数组的循环赋值初始化。

匿名数组初始化

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

上述代码中,我们使用new运算符和初始值的方式创建了一个匿名数组,并将其直接赋给数组对象,实现了数组的匿名初始化。

测试用例

下面是一个简单的测试用例,使用main函数对数组进行初始化并输出。

package com.example.javase.ms.txy;import java.util.Arrays;/*** @Author ms* @Date 2023-12-20 12:20*/
public class ArrayInitializationTest {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};System.out.println(Arrays.toString(arr));}
}

上述代码创建了一个包含5个元素的整型数组,并输出数组的内容。

测试结果展示:

在这里插入图片描述

测试代码分析:

  这段代码是一个简单的Java程序,主要实现了一个数组的初始化和打印。

  首先定义了一个公共类 ArrayInitializationTest,然后在 main 方法中进行程序的入口。

  在 main 方法中,定义了一个 int 类型的数组 arr,并使用大括号 {} 来初始化数组,将值 1, 2, 3, 4, 5 分别赋给数组的每个元素。

  接下来使用 Arrays.toString() 方法将数组内容转换为字符串,并使用 System.out.println() 方法打印输出。

  最终运行程序,将输出结果打印在控制台上。

全文小结

  本文介绍了Java数组的初始化方法,包括静态初始化和动态初始化。静态初始化是在声明数组时直接赋初值,动态初始化是在声明数组后通过循环或指定索引的方式逐个赋值。数组的初始化方法根据具体需求选择,静态初始化简洁易懂,动态初始化更灵活。同时,还介绍了一些常用的数组方法和一个简单的测试用例。

总结

  数组的初始化是Java开发中的重要步骤,正确的初始化可以确保数组的正确使用。本文详细介绍了静态初始化和动态初始化的方法,并举例说明了数组的应用场景和常用方法。在实际开发中,根据具体需求选择适合的初始化方法,可以提高代码效率和可读性。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

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

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

相关文章

深度学习与机器学习:互补共进,共绘人工智能宏伟蓝图

在人工智能的广阔天地中&#xff0c;深度学习与机器学习如同两支强大的队伍&#xff0c;各自闪耀着独特的光芒&#xff0c;却又携手共进&#xff0c;共同书写着智能的辉煌篇章。尽管深度学习是机器学习的一个分支&#xff0c;但它们在模型构建、特征提取以及应用场景等多个方面…

FFmpeg--FLV格式

文章目录 FLV组成&#xff1a;字段信息flv headertag headeraduio tag datavideo tag data FLV组成&#xff1a; 一种流媒体格式, 当前主流的视频网站基本都支持FLV格式封装&#xff0c;文件后缀为.flv Previous Tag Size 大小为4个字节&#xff0c;内容为前面一个Tag字节大小…

2024 MCM数学建模美赛2024年A题复盘,思路与经验分享:资源可用性与性别比例 | 七鳃鳗性别比例变化对七鳃鳗种群的影响(三)

目录 分析题目 建立模型 计算结果 分析结果 代码 分析题目 对于第二问&#xff1a;探究七鳃鳗性别比例变化对七鳃鳗种群的影响。我们来分析一下题目。 要探究七鳃鳗性别比例变化对七鳃鳗种群的影响&#xff0c;我们就要搞清楚性别平衡时&#xff0c;它的种群多大&#x…

YUNBEE云贝:3月9日-PostgreSQL中级工程师PGCE认证培训

课程介绍 根据学员建议和市场需求,规划和设计了《PostgreSQL CE 认证课程》,本课程以内部原理、实践实战为主&#xff0c;理论与实践相结合。课程包含PG 简介、安装使用、服务管理、体系结构等基础知识。同时结合一线实战案例&#xff0c; 面向 PG 数据库的日常维护管理、服务和…

HTML5 基础1

<b> 和 <strong>的异同 相同点&#xff1a;在显示上&#xff0c;这两个标签都是加粗文本。 不同点&#xff1a;使用网页阅读器阅读网页&#xff08;盲人使用&#xff09;&#xff0c;strong 会重读&#xff0c;b 则不会。从起源上来说&#xff0c;strong 是为了在…

Spring Boot中SQL语句报错

报错原因&#xff1a; You have an error in your SQL syntax 你的SQL语句出现错误 报错位置&#xff1a; check the manual that corresponds to your MySQL server version for the right syntax to use near :/sql/schema.sql.t_film at line 1 在:/sql/schema.sql附近使用…

Logseq电脑端+安卓端同步gitee或github

文章目录 0.初衷1.电脑端1.1 新建仓库1.2 克隆项目&#xff0c;生成秘钥1.3 添加图谱&#xff0c;选择文件目录&#xff0c;我是原本就有笔记&#xff0c;所以会如下所示。1.4 下载脚本文件1.5赋权限 &#xff08;windows可跳过&#xff09;1.6 修改脚本命令1.7 logseq设置同步…

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题&#xff0c;提出了一种特殊的RNN模型——长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTM&#xff09;&#xff0c;能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

图机器学习(4)-面向连接层面的人工特征工程

0 问题定义 通过已经连接去猜未知连接&#xff1a; 有两个思路&#xff1a; &#xff08;1&#xff09;直接提取link的特征&#xff0c;把link变成D维向量&#xff1b; &#xff08;2&#xff09;把link两端节点的D维向量拼在一起&#xff0c;缺点&#xff1a;丢失了link本身…

盲盒抽卡机小程序——开启神秘之旅!

亲爱的朋友们&#xff0c;欢迎来到盲盒抽卡机小程序&#xff01;这里&#xff0c;是一个充满神秘与惊喜的世界&#xff0c;让你随时随地体验抽卡的乐趣。在这里&#xff0c;你可以轻松尝试各种盲盒&#xff0c;发现隐藏的宝藏&#xff0c;感受心跳加速的刺激。 【丰富多样的盲…

CSS实现水波球

使用CSS实现水波球效果&#xff08;单个的水波球&#xff09; 效果如下&#xff1a; <template><div class"indicator" ref"indicator" :style"border-color:${borderCol}"><span class"text">{{ completion }}%…

初识Hive

官网地址为&#xff1a; Design - Apache Hive - Apache Software Foundation 一、架构 先来看下官网给的图&#xff1a; 图上显示了Hive的主要组件及其与Hadoop的交互。Hive的主要组件有&#xff1a; UI&#xff1a; 用户向系统提交查询和其他操作的用户界面。截至2011年&…

2024届 C++ 刷题 笔试强训 Day 01

选择题 01 以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x); A 是无限循环 B 循环次数不定 C 4次 D 3次 解题思路&#xff1a; 我们直接来看本道题中最关键的部分&#xff1a;(y 123) && (x < 4)。 (y…

小小磁珠对EMC的作用竟然这么大?

磁珠&#xff0c;作为一种电感型的EMI静噪滤波器&#xff0c;其外观与电感颇为相似。目前&#xff0c;应用最为广泛的磁珠类型是铁氧体磁珠&#xff0c;也称作Ferrite Bead。它的度量单位是欧姆&#xff0c;根据型号的不同&#xff0c;磁珠能够抑制的频率范围广泛&#xff0c;覆…

ELK介绍使用

文章目录 一、ELK介绍二、Elasticsearch1. ElasticSearch简介&#xff1a;2. Elasticsearch核心概念3. Elasticsearch安装4. Elasticsearch基本操作1. 字段类型介绍2. 索引3. 映射4. 文档 5. Elasticsearch 复杂查询 三、LogStash1. LogStash简介2. LogStash安装 四、kibana1. …

银河麒麟服务器ky10 server wvp镜像制作

在线安装docker yum install docker -y cat >/etc/docker/daemon.json<<EOF{"registry-mirrors": ["https://registry.docker-cn.com","https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"]} EOF systemctl start …

Java设计模式:适配器模式的三种形式(五)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 适配器模式用于将一个类的接口转换为客户端所期望的另一个接口&#xff0c;以实现不兼容接口之间的协作。它像电器插头转换器一样…

VIVADO使用过程中一些注意点

若要将状态改回成“synth_design Complete”&#xff0c;可进行如下操作&#xff1a; 1.清空IP缓存区数据&#xff1a;在Tcl Console窗口中输入“config_ip_cache ‑clear_output_repo”&#xff0c;此时工程中IP缓存数据被清除&#xff1b; 2.禁用IP缓存&#xff1a;在Tcl C…

混合测试写一写

题目 服务器IP地址规划&#xff1a;client&#xff1a;12.0.0.12/24&#xff0c;网关服务器&#xff1a;ens36:12.0.0.1/24、ens33&#xff1a;192.168.44.1/24&#xff0c;Web1&#xff1a;192.168.44.30/24&#xff0c;Web2&#xff1a;192.168.44.50/24&#xff0c;Nginx&am…

CSS的盒子模型:掌握网页设计的基石!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…