首页 > 编程语言 >JavaSE笔记10数组入门

JavaSE笔记10数组入门

时间:2024-04-09 14:32:39浏览次数:30  
标签:10 下标 入门 int 元素 Cat 数组 JavaSE 内存地址

数组的入门

概念

  1. 数组属于引用数据类型,其父类是Object
  2. 数组可以容纳多个元素。(数组是一个数据的集合)
  3. 数组可以存储基本引用数据类型
  4. 数组是引用类型,所以存储再堆内存中
  5. 数组不能直接存储Java对象,但是可以存储其引用(内存地址)

分类

  1. 一维数组
  2. 二维数组
  3. 多维数组

二维数组本质就是每个元素是一个一维数组

特点

  1. 所有的数组都有length属性,用来获取数组中元素的个数。
  2. 数组中的元素要求类型统一
  3. 数组中元素的内存地址是连续的(内存地址是有规律的爱着排列)
  4. 数组是一种简单的数据结构
  5. 首元素的内存地址作为整个数组对象的内存地址
  6. 数组中每个元素都有下标,下标从0开始以1递增,最后一个元素的下标是length - 1
  7. 数组中的元素在存或取时都是通过下标来进行

优点

通过下标检索效率极高,可以说是查询效率最高的数据结构
原因:内存地址连续、元素数据类型一致、占用大小一致、可以通过偏移量直接计算出来
因为是通过数学表达式计算出的元素的内存地址,那么10个元素和1w个元素的数组在检索时效率是一样的

缺点

  1. 为了保证数组中元素地址连续,在随机增删时,后面的元素要统一向前或向后位移
  2. 不能存储大数据量(因为很难在内存空间上找到一块很大而且连续的内存空间)

注意: 对于最后一个元素的增删效率没有影响

补充

数组的扩容
由于数组一旦确定,长度是不可变的
如果原数组存满,那么会建立一个新的更大的元素,并将原来的数组中元素拷贝到新的数组中。
所以数组拷贝的效率很低,尽量不要让数组扩容

System.arraycopy源码:

//第一个是 源数组,第二个是开始位置,第三个是目标数组,第四个目标数组位置,第五个是拷贝长度
public static native void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);

初始化

int类型数组举例

  1. 静态初始化
int[] array = {100,2100,513,12};
  1. 动态初始化
//此处的5表示数组中元素的个数
//初始的五个元素都是int类型的默认值:0
int[] array = new int[5];

访问时通过数组对象[下标]的方式访问例如array[1]表示访问下标为1的元素

遍历数组:(采用for循环遍历)

for(int i = 0; i < array.length; i++){
	System.out.println(a[i]);
}
//同样的方式可以实现倒序遍历

另外可以和多态联合使用如:

Animal Cat Bird 三个类
Cat和Bird extends Animal

可以创建Animal数组,存储其子类
Animal[] animals = {new Cat(),new Bird()};
如果要遍历子类中特有的方式时,可以在for循环中加上instanceof判断符

if(animals[i] instanceof Cat){
	Cat cat = (Cat)animals[i];
}

标签:10,下标,入门,int,元素,Cat,数组,JavaSE,内存地址
From: https://blog.csdn.net/Annaday/article/details/137548967

相关文章

  • iPad 10哪个颜色好看?iPad 10处理器是什么型号?
    苹果iPad10将会搭载A14Bionic处理器。A14芯片采用台积电5nm工艺,集成了118亿晶体管,Geekbench平台上3.1GHz主频下达到了单核1658分、多核4612分。它采用6核心设计,4个节能核心及2个效能核心,性能方面与上一代iPadAir的A12处理器相比提升了40% iPad10更多使用感受......
  • 关于Windows 10或11睡眠和休眠的知识,看这篇文章就差不多了
    序言Windows提供了几个选项,用于在不使用PC时节省电源。这些选项包括睡眠、休眠和混合睡眠,如果你有笔记本电脑,这些选项特别有用。下面是它们在Windows10和Windows11上的区别。睡眠与休眠睡眠模式和休眠完成相似的事情,但有几个重要的区别。睡眠模式是一种节能状态,类似于暂......
  • STM32F103C8T6 技术参数和性能特点
    STM32F103C8T6是意法半导体(STMicroelectronics)生产的一款基于ARMCortex-M3内核的32位微控制器。它具有以下主要功能: 1.ARMCortex-M3内核:STM32F103C8T6采用32位ARMCortex-M3内核,工作频率最高可达72MHz,提供较高的处理能力。 2.存储器:内置高达64kB的闪......
  • 英伟达计划上调游戏显卡的售价,预计涨幅约为10%。
        受供应减少和市场需求增加的影响,英伟达在中国大陆的游戏显卡价格普遍上涨,其中RTX4060Ti及以下级别产品的涨幅达到了10%。    具体来说,调价幅度如下:RTX4070SUPER系列上调100元,RTX4060Ti/4060系列上调20至50元,RTX3050系列上调50元,GTX1650系列上调30元......
  • 今天给大家推荐100套响应式模板
    响应式模板是一种可以自动适应不同屏幕尺寸的网站模板。它们非常适合在各种设备上查看网站,包括台式机、笔记本电脑、平板电脑和智能手机。以下是一些推荐使用响应式模板的理由:提高用户体验: 响应式模板可以为用户提供更好的体验,无论他们使用何种设备访问您的网站。提高搜索......
  • vue快速入门(十四)reduce求和
    注释很详细,直接上代码新增内容非嵌套情况求和嵌套情况求和源码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><ti......
  • vue3 快速入门系列 —— vue3 路由
    vue3快速入门系列-vue3路由在vue3基础上加入路由。vue3需要使用vue-routerV4,相对于v3,大部分的VueRouterAPI都没有变化。Tip:不了解路由的同学可以看一下笔者之前的文章:vue2路由参考:vue2路由官网、vue3路由官网vue-routerV4在VueRouterAPI从v3(Vue2)到v4......
  • 黑客入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
    前言笔者本人17年就读于一所普通的本科学校,20年6月在三年经验的时候顺利通过校招实习面试进入大厂,现就职于某大厂安全联合实验室。我为啥说自学黑客,一般人我还是劝你算了吧!因为我就是那个不一般的人。首先我谈下对黑客&网络安全的认知,其实最重要的是兴趣热爱,不同于......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......