Java 笔记 14:Java 数组内容,数组的基本特点、数组边界,以及一些数组使用案例

一、前言

记录时间 [2024-05-04]

系列文章简摘:
Java 笔记 01:Java 概述,MarkDown 常用语法整理
Java 笔记 02:Java 开发环境的搭建,IDEA / Notepad++ / JDK 安装及环境配置,编写第一个 Java 程序
Java 笔记 11:Java 方法相关内容,方法的设计原则,以及方法的定义和调用
Java 笔记 13:Java 数组内容,数组的声明、创建、初始化、赋值等,以及内存分析

更多 Java 相关文章,请参考上面专栏哦。

本文讲述 Java 数组相关知识,包括数组的基本特点数组边界,以及一些数组使用案例


二、数组的基本特点

数组是一种常见的数据结构,具有以下基本特点:

  • 有序性 :数组中的元素是有序排列的,每个元素在数组中都有一个唯一的索引 index,可以通过索引来访问和修改数组中的元素。
  • 同质性 :数组中的元素类型通常是相同的,即数组中的元素具有相同的数据类型。这意味着数组中的元素占用的内存大小是相同的。
  • 固定长度 :数组的长度通常在创建时就确定,并且在整个数组的生命周期中保持不变。这意味着无法动态地增加或减少数组的长度。
  • 随机访问: 由于数组中的元素是通过索引来访问的,因此可以在常量时间(O(1) 时间复杂度)内获取数组中任意位置的元素。
  • 连续的内存空间: 数组中的元素在内存中是连续存储的,这也是实现随机访问的关键。因此,数组的插入和删除操作可能会涉及大量的元素移动,尤其是在数组的中间或开头插入 / 删除元素时。
  • 支持多维数组 :数组可以是多维的,例如二维数组、三维数组等。多维数组的元素通过多个索引进行访问。
  • 引用类型:数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。Java 中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

三、数组边界

数组边界指的是数组的有效索引范围,即可以用于访问数组元素的索引范围。

在 Java 中,数组的边界是从索引 0 开始的一系列整数,直到数组长度减去 1。这意味着对于长度为 n 的数组,有效的索引范围是从 0 到 n - 1

例如,如果有一个长度为 5 的数组,有效的索引范围将是从 0 到 4,共有 5 个元素。试图访问索引为 5 或更大的索引将导致 ArrayIndexOutOfBoundsException 异常,这是 Java 中常见的数组越界错误。

Java 中的数组是固定长度的,一旦创建,其长度就不能再更改。因此,一旦确定了数组的长度,就可以根据该长度来确定数组的有效索引范围。


四、数组使用案例

1. 打印数组元素

在 Java 中,要打印数组的全部元素,可以使用循环遍历数组,并将每个元素打印出来。

这可以通过使用 for 循环或者增强型 for 循环来实现。这两种方法都会打印出数组的所有元素。

  • 普通的 for 循环,通过索引来访问每个元素;
  • 增强型 for 循环,直接遍历数组中的每个元素。

普通 For 循环

下面是使用 for 循环打印数组元素的示例代码:

public class Main {
    public static void main(String[] args) {
        
        int[] array = {1, 2, 3, 4, 5};

        System.out.println("数组元素如下:");
        
        // array.length 数组的长度,一个有几个元素
        for (int i = 0; i < array.length; i++) {
            System.out.println("索引 " + i + ": " + array[i]);
        }
    }
}

For-Each 循环

使用增强型 for 循环,即 For-Each 循环,来遍历数组:

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};

        System.out.println("数组元素如下:");
        for (int element : array) {
            System.out.println(element);
        }
    }
}

2. 计算所有元素的和

要计算数组中所有元素的和,可以在循环中遍历数组,并将每个元素的值加总起来。

下面是一个示例代码,演示如何在 Java 中计算数组所有元素的和:

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        int sum = 0;

        // 遍历数组,将每个元素的值加总起来
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }

        System.out.println("数组所有元素的和为:" + sum);
    }
}

在这个示例中:

  • 首先声明了一个整型变量 sum 来保存数组元素的和,并初始化为 0。
  • 然后,使用普通的 for 循环遍历数组,将每个元素的值加到 sum 中。
  • 最后,打印出 sum 的值,即为数组所有元素的和。

3. 查找最大元素

要在 Java 中找到数组中的最大元素,可以遍历数组,并在遍历的过程中持续更新最大值。

下面是一个示例代码,演示如何找到数组中的最大元素:

public class Main {
    public static void main(String[] args) {
        int[] array = {10, 5, 20, 8, 15};
        
        // 假设数组的第一个元素是最大值
        int max = array[0];
        
        // 遍历数组,比较每个元素与当前最大值,更新最大值
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        
        System.out.println("数组中的最大元素为:" + max);
    }
}

在这个示例中:

  • 我们假设数组的第一个元素是最大值,并将其赋给变量 max
  • 然后遍历数组,从第二个元素开始比较每个元素与当前的最大值 max
  • 如果找到比 max 更大的元素,则更新 max 的值为该元素;
  • 最终,当遍历完成时,max 中存储的就是数组中的最大元素。

4. 作为方法入参

在 Java 中,可以将数组作为方法的参数传递。这样可以在方法内部访问和操作数组的元素。

以下是一个示例代码,演示如何将数组作为方法的参数传递:

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        
        // 调用方法,并将数组作为参数传递
        printArray(array);
    }
    
    // 定义一个方法,接受一个整型数组作为参数,并打印数组的元素
    public static void printArray(int[] arr) {
        
        System.out.println("数组元素如下:");
        
        for (int i = 0; i < arr.length; i++) {
            System.out.println("索引 " + i + ": " + arr[i]);
        }
        
    }
}

在这个示例中,我们定义了一个名为 printArray 的方法,它接受一个整型数组作为参数

main 方法中,我们创建了一个整型数组 array,然后将它作为参数传递给 printArray 方法。

printArray 方法内部,我们使用了普通的 for 循环来遍历传入的数组 arr,并打印数组的每个元素及其索引。

这样,通过将数组作为方法的参数传递,我们可以在方法内部访问和操作数组的元素。


5. 充当返回值

在 Java 中,可以让方法返回一个数组作为其返回值。这允许在方法中创建、初始化和操作数组,然后将其返回给调用者。

以下是一个示例代码,演示如何编写一个方法来反转数组,并将反转后的数组作为返回值返回。

public class Main {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        
        // 调用反转数组方法并接收返回的数组
        int[] reversedArray = reverseArray(array);
        
        // 打印反转后的数组
        System.out.println("反转后的数组如下:");
        for (int i = 0; i < reversedArray.length; i++) {
            System.out.println("索引 " + i + ": " + reversedArray[i]);
        }
    }
    
    // 定义一个方法,用于反转数组,并将反转后的数组作为返回值返回
    public static int[] reverseArray(int[] arr) {
        
        // 定义一个和原数组一样长的新数组
        // 注意不能直接把原数组引用给它
        int[] reversedArray = new int[arr.length];
        
        // 将原数组元素反转到新数组中
        for (int i = 0; i < arr.length; i++) {
            reversedArray[i] = arr[arr.length - 1 - i];
        }
        
        return reversedArray; // 返回反转后的数组
    }
}

在这个示例中,我们定义了一个名为 reverseArray 的方法,它接受一个整型数组作为参数,并返回一个新的反转后的数组。

在方法内部,我们首先创建了一个与原数组长度相同的新数组 reversedArray。然后,我们使用循环将原数组的元素反转到新数组中。最后,我们返回新数组 reversedArray

main 方法中,我们调用 reverseArray 方法,并将原数组作为参数传递给它。然后,我们接收并打印返回的反转后的数组。


五、总结

本文讲述 Java 数组相关知识,包括数组的基本特点数组边界,以及一些数组使用案例


一些参考资料

狂神说 Java 零基础:https://www.bilibili.com/video/BV12J41137hu/
TIOBE 编程语言走势: https://www.tiobe.com/tiobe-index/
Typora 官网:https://www.typoraio.cn/
Oracle 官网:https://www.oracle.com/
Notepad++ 下载地址:https://notepad-plus.en.softonic.com/
IDEA 官网:https://www.jetbrains.com.cn/idea/
Java 开发手册:https://developer.aliyun.com/ebook/394
Java 8 帮助文档:https://docs.oracle.com/javase/8/docs/api/

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

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

相关文章

KMP算法--C语言实现

#include <stdio.h> #include <assert.h> #include <string.h> #include <stdlib.h>void GetNext(char* sub, int next[]) {int lenSub strlen(sub);next[0] -1; // 初始第一个为 -1 第二个为 0next[1] 0;int i 2;int k 0;while (i < lenSub){…

探究Android的多分辨率支持以及各种类型图标尺寸大小

术语和概念 屏幕尺寸 屏幕的物理尺寸&#xff0c;以屏幕的对角线长度作为依据&#xff08;比如 2.8寸&#xff0c; 3.5寸&#xff09;。 简而言之&#xff0c; Android把所有的屏幕尺寸简化为三大类&#xff1a;大&#xff0c;正常&#xff0c;和小。 程序可以针对这三种尺寸…

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例 引言1. UniMRCP和UmcFramework简介2. 准备工作3. unimrcpclient.xml配置文件3.1 定义SIP设置3.2 定义MRCP会话配置文件 4. C代码示例5. 测试和验证6. 故障排查7. 结论8. 参考文献 引言 在多媒体通信…

Vue单页面应用和多页面应用的区别

概念&#xff1a; SPA单页面应用&#xff08;SinglePage Web Application&#xff09;&#xff0c;指只有一个主页面的应用&#xff0c;一开始只需要加载一次js、css等相关资源。所有内容都包含在主页面&#xff0c;对每一个功能模块组件化。单页应用跳转&#xff0c;就是切换…

STM32标准库编译流程

导入库函数 在ST官方固件库中找到STM32F10x_StdPeriph_Lib_V3.5.0.zip文件&#xff0c;解压&#xff0c;打开Libraries,接着打开STM32F10x_StdPeriph_Driver文件夹&#xff0c;继续点击src&#xff0c;看到库函数源文件&#xff1a; 将其复制到keil建立的工程的文件中&#xf…

JAVA系列 小白入门参考资料 接口

目录 接口 接口的概念 语法 接口使用 接口实现用例 接口特性 实现多个接口和实现用例 接口间的继承 接口 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本上的 USB 口&#xff0c;电源插座等。 电脑的 USB 口上&am…

在视频中使用时间卷积和半监督训练进行三维人体姿态估计

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;在视频中使用时间卷积和半监督训练进行三维人体姿态估计1、文献摘要2、提出方法2.1、时间扩张卷积模型2.2、半监督方法2.3、与传统…

【错题集-编程题】十字爆破(预处理 + 模拟)

牛客对于题目链接&#xff1a;十字爆破 (nowcoder.com) 一、分析题目 暴力模拟会超时。 预处理&#xff0c;先把每一行以及每一列的和存起来。 模拟即可&#xff0c;但是由于数据量过⼤&#xff0c;我们可以提前把每⼀⾏以及每⼀列的和存起来&#xff0c;⽅便统计总和。 二、代…

应用分层和企业规范

目录 一、应用分层 1、介绍 &#xff08;1&#xff09;为什么需要应用分层&#xff1f; &#xff08;2&#xff09;如何分层&#xff1f;&#xff08;三层架构&#xff09; MVC 和 三层架构的区别和联系 高内聚&#xff1a; 低耦合&#xff1a; 2、代码重构 controlle…

Sqlserver批量迁移Job

因为切换物理机&#xff0c;需要把数据库的作业从A机器迁移到B机器&#xff0c;数据库整体备份还原就可以了&#xff0c;数据库上的作业不会跟着带过去&#xff0c;需要手动创建&#xff0c;作业数量太多&#xff0c;逐一创建太浪费时间&#xff0c;Microsoft SQL Server Manag…

SpringBoot+Vue项目企业客户管理系统

一、前言介绍 本文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述企业客户管理系统的当前背景以及系统开…

扩展学习|国内外用户画像相关进展一览

文献来源&#xff1a;徐芳,应洁茹.国内外用户画像研究综述[J].图书馆学研究,2020(12):7-16.DOI:10.15941/j.cnki.issn1001-0424.2020.12.002. 一、用户画像的概念 用户画像概念一经提出,便被广泛应用到精准营销等领域。后来,作为一种描绘用户特征、表达用户诉求的有效工具,用户…

karpathy Let‘s build GPT

1 introduction 按照karpathy的教程&#xff0c;一步步的完成transformer的构建&#xff0c;并在这个过程中&#xff0c;加深对transformer设计的理解。 karpathy推荐在进行网络设计的过程中&#xff0c;同时利用jupyter notebook进行快速测试和python进行主要的网络的构建。 …

前端页面平滑过渡解决方案

一、问题产生 在使用图片作为页面背景时&#xff0c;无法使用transtion进行平滑过渡&#xff0c;直接切换背景又会降低使用体验。 二、解决方式 使用clip-path对背景图片裁剪配合transtion实现平滑过渡的效果 三、效果展示 网址&#xff1a;ljynet.com 四、实现方式 tem…

图像特征点检测

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

练习题(2024/5/3)

1对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; 树中…

前端工程化04-VsCode插件设置总结(持续更)

1、输出语句log设置 log输出、平常你输出log,还必须得打一个console然后再.log()非常不方便&#xff0c;当然我们可以直接输入一个log,但是提示有两个&#xff0c;我们还得上下选择 所以我们直接采用插件的提示 一个clg就可以了 2、括号包裹提示 找到VsCode的settings.js文…

考研入门55问---基础知识篇

考研入门55问---基础知识篇 01 &#xff1e;什么是研究生入学考试&#xff1f; 研究生是指大专和本科之后的深造课程。以研究生为最高学历, 研究生毕业后&#xff0c;也可称研究生&#xff0c;含义为研究生学历的人。在中国大陆地区&#xff0c;普通民众一般也将硕士毕业生称…

微图乐 多种装B截图一键制作工具(仅供娱乐交流)

软件介绍 采用exe进程交互通信。全新UI界面&#xff0c;让界面更加清爽简约。支持zfb、VX、TX、Yin行、Dai款、游戏等图片生成&#xff0c;一键超清原图复制到剪辑板&#xff0c;分享给好友。适用于提高商家信誉度&#xff0c;产品销售额度。装逼娱乐&#xff0c;用微图乐。图…

InfiniFlow 創始人兼CEO張穎峰確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…
最新文章