Java ==> 数组(入门)

news2024/12/24 8:08:04

文章目录

  • 前言
  • 一、一维数组
    • 1.入门操作
    • 2.何为null?
    • 3.数组可以作为函数的参数
    • 4.数组可以作为函数的返回值
  • 二、二维数组
    • 1.基础操作
    • 2.不规则的二维数组
  • 总结


前言

在Java语言当中,数组是一种基本的数据结构,它存储了固定大小的同类型元素的集合。数组中的每个数据项都被称为元素,并且可以通过索引(一个非负整数)来访问。数组的索引从0开始,这意味着第一个元素位于索引0处,第二个元素位于索引1处,依此类推。


提示:以下是本篇文章正文内容,下面案例可供参考

一、一维数组

1.入门操作

1.声明:在使用数组之前,必须先声明它。声明数组时需要指定数组的类型以及数组的名字。

int[] array1; // 声明一个整型数组
String[] array2; // 壍明一个字符串数组

2.创建:声明数组后,还需要创建数组实例并分配内存空间。

int[] array1=new int [5]; // 创建一个含有5个整数的数组
int[3] array2 = new String[3]; // 创建一个含有3个字符串的数组

3.初始化:可以在创建数组的同时进行初始化

int[] array = {1, 2, 3, 4, 5}; // 直接初始化一个整型数组
String[] daysOfWeek = {"Monday", "Tuesday", "Wednesday"}; // 初始化一个字符串数组

4.访问:通过索引(类似于C语言数组的下标)来访问或修改数组中的元素。

System.out.println(array1[0]); // 输出第一个元素
array1[0] = 10; // 修改第一个元素为10

5.长度:可以使用(数组名.length)属性获取数组的长度(元素的数量)。

int length = array1.length; // 获取array1数组的长度

6.遍历:1.通常使用循环来遍历数组的所有元素。

for (int i = 0; i < array1.length; i++) {
    System.out.println(array1[i]);
}
// 或者使用增强for循环(for each)
for (int i : array1) {
    System.out.println(i);
}

2.我们可以通过Array.toString(数组名)来直接输出数组中的各个元素
例如:
在这里插入图片描述
输出:
在这里插入图片描述
我觉得Java中,还是相对于C语言更加的遍历,这样我们就不用在使用for循环去遍历。

2.何为null?

在Java中,null表示的是空引用,也就是一个不指向对象的引用.
null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会抛出 NullPointerException.
例如:
在这里插入图片描述

在这里插入图片描述
接下来我们给个例子更容易得理解null,和Java中数组创建的位置和对象的位置。
例如:
在这里插入图片描述
我们最后输出会是什么呢?
是下面这样吗?:
1,6,3,4,5
1,2,6,4,5
我们输出一下:
在这里插入图片描述
显然并不是,我们利用图解来说明一下:
在这里插入图片描述

3.数组可以作为函数的参数

在Java中,数组可以作为函数(方法)的参数传递。当数组作为参数时,实际上是将数组的引用传递给方法。这意味着方法内部对数组元素的任何修改都会影响到原始数组。

1.基本语法
方法声明:在方法声明中指定数组类型。

public void methodName(int[] array) {
    // 方法体
}

调用方法:使用数组名作为实参来调用方法。

int[] array = {1, 2, 3, 4, 5};
methodName(array);

2.数组引用传递
①在Java中,数组是对象,因此它们是通过引用来传递的。
②当你将数组传递给一个方法时,你实际上是在传递数组的引用(即指向数组在内存中的地址)。
③如果方法内部修改了数组的内容,那么这些修改会在方法外部可见。

4.数组可以作为函数的返回值

在Java中,数组不仅可以作为方法的参数传递,也可以作为方法的返回值。当一个方法返回一个数组时,实际上是返回了该数组的引用。这意味着调用者可以访问到整个数组,并且能够修改数组中的元素(如果这些元素是可变类型)

1.基本语法
方法声明:在方法声明中指定返回类型为数组。

public int[] methodName() {
    // 方法体
}

返回数组:在方法体内创建或处理数组,并使用 return 语句返回它。

public int[] methodName() {
    ...
    int[] array = {1,2,3,4,5};
    return array;
}

2.注意事项
①不要返回局部变量数组:如果你在一个方法内部创建了一个局部数组并且没有将其赋值给任何类成员变量或静态变量,那么这个数组在方法执行完毕后会被垃圾回收。因此,确保返回的数组是有生命周期保证的。
②数组引用:返回数组实际上是返回数组的引用,所以调用者可以直接操作这个数组的内容。
③空数组:有时你可能需要返回一个空数组来表示没有结果的情况,这比返回 null 更好,因为它避免了调用者需要检查 null 的情况。

3.实际应用
我们给定一个数组要将其所有元素重置为0:
在这里插入图片描述
输出:
在这里插入图片描述

二、二维数组

在Java中,二维数组可以被看作是一个“数组的数组”。它是一种特殊的数据结构,其中每个元素本身也是一个数组。二维数组通常用于表示表格、矩阵或网格等数据结构。

1.基础操作

声明:首先你需要声明一个二维数组。

int[][] array1; // 声明一个整型二维数组
String[][] array2; // 声明一个字符串二维数组

创建:然后你需要为这个二维数组分配内存空间

array1 = new int[3][4]; // 创建一个3行4列的整型二维数组
array2 = new String[2][2]; // 创建一个2行2列的字符串二维数组

初始化:你也可以在声明的同时进行初始化。

int[][] array1 = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}; // 初始化一个3x3的二维数组

String[][] array2 = {
    {"aaa", "bbb"},
    {"ccc", "ddd"}
}; // 初始化一个2x2的二维字符串数组

遍历:可以使用嵌套循环来遍历二维数组的所有元素。

for (int i = 0; i < array1.length; i++) { // 外层循环遍历行
    for (int j = 0; j < array1[i].length; j++) { // 内层循环遍历列
        System.out.print(array1[i][j] + " ");
    }
    System.out.println(); // 换行
}

或者使用for each:

for (int[] row : array1) {
//row表示行
    for (int element : row) {
    
        System.out.print(element + " ");
    }
    System.out.println();
}

2.不规则的二维数组

二维数组中的每一行可以有不同的列数,这样的数组称为不规则二维数组。
例如:

int[][] array1 = {
    {1, 2, 3},
    {4, 5},
    {6, 7, 8, 9}
};

在遍历不规则二维数组时,需要注意每一行的长度可能不同。

for (int i = 0; i < array1.length; i++) {
    for (int j = 0; j < array1[i].length; j++) {
        System.out.print(array1[i][j] + " ");
    }
    System.out.println();
}

注意事项:
① 确保在访问元素时不会超出边界,否则会抛出 ArrayIndexOutOfBoundsException
②在处理不规则二维数组时,要特别注意每行的实际长度。


总结

非常感谢大家阅读完这篇博客。希望这篇文章能够为您带来一些有价值的信息和启示。在未来的日子里,我们将继续探索更多关于博客技术的精彩内容,敬请期待。如果您有任何问题或建议,欢迎在评论区留言,我们一起交流学习。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

告别卡顿!五款Windows录屏工具,让每一帧都清晰流畅

小伙伴们&#xff0c;是不是在寻找一款好用、实用的Windows录屏工具呢&#xff1f;别担心&#xff0c;这次我给大家带来了一款热门录屏工具的详细评测和使用感受&#xff0c;包括福昕录屏、转转录屏、爱拍录屏、OBS录屏和EV录屏。快来看看哪款最适合你吧&#xff01; 一、福昕录…

反射的学习

1、什么是反射 反射允许对封装类的字段&#xff0c;方法和构造函数的信息进行编程访问。 也就是&#xff1a; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 2、获取class对象 获取一个类的字节码文件对象&#xff1a; 方式1&#xff1a;Class.…

linux 环境运行 jenkins.war包,有可能会出现字体问题,jdk版本:11 jenkins 版本:2.420

jenkins的目录&#xff1a; /usr/jenkins 启动命令 java -Djava.awt.headlesstrue sudo timedatectl set-timezone Asia/Shanghai-Xmx1024m -jar jenkins.war --httpPort8090 任意目录启动&#xff1a; nohup java -Djava.awt.headlesstrue -Xms1024m -Xmx1024m -jar /usr/j…

基于opencv答题卡识别判卷

我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色&#xff1a;深度实…

Excel使用技巧:数据-》分列:处理log数据,把有用的信息提取出来;查找Ctrl+F,替换Ctrl+H;通配符

Excel的正确用法&#xff1a; Excel是个数据库&#xff0c;不要随意合并单元格。 数据输入的时候一定要按照行列输入&#xff0c;中间不要留空&#xff0c;不然就没有关联。 数据-》分列&#xff1a;处理log数据&#xff0c;把有用的信息提取出来。 按照向导一步一步操作。…

D36【python 接口自动化学习】- python基础之函数

day36 函数的定义 学习日期&#xff1a;20241013 学习目标&#xff1a;输入输出与文件操作&#xfe63;-49 函数定义&#xff1a;如何优雅地反复引用同一段代码&#xff1f; 学习笔记&#xff1a; 函数的用途 定义函数 调用函数 # 定义函数 def foo():print(foo)print(foo …

数据传送指令

文章目录 MOVXCHGPUSH和POPIN和OUTXLATLEA LDS LESLEALDSLES LAHF SAHFPUSHF POPF总结 MOV MOV dst, src ; dst <-- src可以进行8位或16位数据的传送源操作数可为立即数、寄存器、存储器操作数目的操作数不可为立即数&#xff0c;CS、IP寄存器两操作数必有一个寄…

Hi3244 应用指导

Hi3244 是一款DIP8封装高性能、多模式工作的原边控制功率开关。Hi3244内高精度的恒流、恒压控制机制结合完备的保护功能&#xff0c;使其适用于小功率离线式电源应用中。在恒压输出模式中&#xff0c;Hi3244 采用多模式工作方式&#xff0c;即调幅控制&#xff08;AM&#xff0…

LLM - 配置 ModelScope SWIFT 环境与 Qwen2-VL 模型推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142827217 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 SWIFT …

AI 工具大比拼:ChatGPT 与豆包的魅力与未来展望

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…

C++的类和动态内存分配(深拷贝与浅拷贝)并实现自己的string类

首先&#xff0c;我们先写一个并不完美的类&#xff1a; #include<iostream> #include<cstring> using namespace std;class Mystring{private:char *p;int len;static int num;friend ostream& operator<<(ostream& os, const Mystring& c);pu…

QT开发--多线程

第十四章 多线程 QThread 是 Qt 中实现多线程编程的核心类&#xff0c;提供跨平台线程管理。 使用 QThread 有两种方法&#xff1a; 1、 继承 QThread&#xff1a;重写 run() 方法&#xff0c;实现线程的具体操作。Qt4.8 之前较常用。 2、 使用 QObject 和 moveToThread()&…

2024-10-13 NO.1 Quest3 激活教程

文章目录 1 下载 Occlus 助手2 打开 quest 热点3 Quest3 连接 wifi4 详细文档5 参考教程 1 下载 Occlus 助手 ​ 网址&#xff1a;https://ochelper.xlemon.cn/home.html。 2 打开 quest 热点 ​ 下载 Occlus 助手后&#xff0c;双击 exe 文件打开。 ​ 过程中按照程序提示执…

各类排序详解

前言 本篇博客将为大家介绍各类排序算法&#xff0c;大家知道&#xff0c;在我们生活中&#xff0c;排序其实是一件很重要的事&#xff0c;我们在网上购物&#xff0c;需要根据不同的需求进行排序&#xff0c;异或是我们在高考完报志愿时&#xff0c;需要看看院校的排名&#…

【动手学深度学习】6.2 图像卷积(个人向笔记)

1. 互相关运算 严格来说&#xff0c;卷积层是一个错误的叫法&#xff0c;因为它本质上是互相关运算而不是卷积运算。我们暂时忽略通道看看二维图像数据和隐藏表示。那么输出大小可以表示为 我们自己实现一个二维互相关运算 2. 卷积层 卷积层中有两个参数&#xff1a;卷积核权…

Medieval Kingdom UI 中世纪王国AAA级UI游戏界面

这款中世纪王国风格的大型素材包包含大量绘图、图标、用户界面(UI)元素、完整的世界地图和文明图标。它将助您打造一款游戏,或为您的3D游戏增添亮点。您还可以为对话制作国王的动画,为4K游戏创建独特的面板和窗口。提供两种独特皮肤:经典(冷色调)和白金(暖色调)。 素…

国家基本药物目录数据库查询3种方法(2018、2012、2009年版)

国家基本药物目录是一份由国家卫生健康委员会等相关部门制定的药品清单&#xff0c;旨在满足国家公共卫生需求&#xff0c;保障基本医疗服务。该目录包括了多种药品&#xff0c;覆盖了不同的疾病治疗领域&#xff0c;如抗生素、心血管药物、神经系统药物、抗肿瘤药物、维生素和…

STM32 -- USB CDC 虚拟串口通信

本篇操作: 通过CubeMX Keil&#xff0c;配置STM32作为USB设备端&#xff0c;与电脑上位机进行通信&#xff08;CDC&#xff09;&#xff1b;通用带USB功能的 STM32 芯片 &#xff08;如F1、F4等&#xff0c;系统时钟配置不同&#xff0c;代码通用&#xff09;。 目录 一、 S…

[论文精读]Active and Semi-Supervised Graph Neural Networks for Graph Classification

论文网址&#xff1a;Active and Semi-Supervised Graph Neural Networks for Graph Classification | IEEE Journals & Magazine | IEEE Xplore英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若…

大数据-168 Elasticsearch 单机云服务器部署运行 详细流程

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…