java数据结构 数组例子,跟我学java编程—Java基础数据结构之数组

前面介绍的数据类型都是基本数据类型,例如整型、字符型、浮点型等数据,这些都是简单的数据类型。对于有些数据,只有简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。

例如:假设需要接收并存储100个学员的成绩,此时无法使用for循环依次读取每个学员的成绩,因为在for循环中只通过一个变量依次存储这些值,这样,for循环运行结束后只能保存最后一个学员的成绩,而前面99个学员的成绩都无法找回。因此,在这种情况下,只能通过声明100个变量,并且编写100个nextFloat()和printf()语句,来接收和输出用户输入的学员成绩。那么,如果要求处理5000个学员的成绩呢,岂不要定义5000个存储成绩的变量?

日常生活中有大量的数据类似于此,它们有相同的类型,需要的处理方法也一致,为了实现对这些数据统一表达和处理,Java语言提供了“数组”这一数据结构,数组可以把同一类型的数据有序进行排列,进行同一存储和操作。数组结构如下图所示;

2a3976ad71cd7de6bc85920ec6a50063.png图 9-1 数组结构

数组是有序数据的集合,其结构的最大特征就是通过有序编号固定集合内每个数据的位置如上图所示。有序编号被称为下标,被固定的每个数据被称为元素。数组内所包含元素的数据类型没有限制,可以是任意类型的数据,如数值、字符串、布尔型、对象、数组。下标值是一个从0开始的连续正整数。上图的0、1、2、length-2、length-1为数组元素的下标,其中length是数组包含元素的个数,length-2为数组倒数第二个元素,length-1为数组最后一个元素。程序可以通过下标访问数组中的元素。

数组的所有元素在内存中连续存储,其所有元素的数据类型必须相同。不能将数据类型不同的数据存储在同一个数组中。不管数组中含有多少个元素,该数组都将只有一个名称。数组的大小或长度是可容纳元素的最大数量。在数组的处理过程中,如果数组的下标值超过此大小,将会导致程序运行过程中发生不可预知的结果,因此在使用数组时,必须确保数组容纳元素的数量不能超过数组规定的大小。

下图显示了数组中涉及的概念,包括数组的名称、大小、数组中的元素及数组的下标。

d1844a8e34837edea5eadfa8dc434f90.png

图 9-2 数组结构说明

上图显示了名称为Rate的数组及其四个元素,数组名称后面方括号中的数字是数组可容纳元素的最大数量,也称为数组的长度,数组的小标标明了元素在数组中的位置。

■ 知识点拨

数组是Java语言中一种非常重要的数据类型,是具有相同的数据类型且按一定次序排列的一组变量的集合体,构成一个数组的这些变量称为数组元素。数组有一个统一的名称,通过名称和数组下标可以访问数组中的任意元素。

■ 思考与练习

生活中有很多类似数组应用的例子,例如:一个足球队通常会有几十个人,球迷会把他们看作是所喜爱球队的成员,然后再利用他们的号码来区分每一个队员,这时候,球队就是一个数组,而号码就是数组的下标,球迷可以用某某队某某号来确定每一个球员。放到程序当中,球队就是数组名称,球员号码就是下标。

请尝试列举一个生活中类似数组应用的例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 数组是多个相同类型数据的组合,用于实现对这些数据的统一管理。在Java中,数组可以包含任何数据类型,包括基本类型和引用类型。数组的下标从0开始,必须在指定范围内使用,否则会报下标越界异常。数组的赋值机制有两种情况,对于基本数据类型,赋的值是具体的数据,相互之间不影响;对于数组,默认情况下是引用传递,赋的值是地址。\[2\] 在解决LeetCode问题中,可以使用数组来存储和操作数据。例如,在解决两数之和问题时,可以使用HashMap来存储数组元素和对应的下标,然后遍历数组,判断目标值减去当前元素是否在HashMap中存在,如果存在,则返回对应的下标。这样可以在O(n)的时间复杂度内解决问题。\[1\] 在解决移除元素问题时,可以使用双指针的方法。定义一个慢指针和一个快指针,快指针用于遍历数组,慢指针用于指向不需要移除的元素。当快指针指向的元素不需要移除时,将其赋值给慢指针指向的位置,并将慢指针向后移动一位。最后返回慢指针的位置即可。这样可以在O(n)的时间复杂度内解决问题。\[3\] #### 引用[.reference_title] - *1* *2* [Java数据结构----数组](https://blog.csdn.net/automation666/article/details/130348201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Java-数据结构-数组](https://blog.csdn.net/weixin_45532984/article/details/125867222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值