数组

举报
@小红花 发表于 2022/02/25 17:00:27 2022/02/25
【摘要】 java语言中的数组是一种引用数据类型。数组的父类是Object。数据实际上是一个容器,可以同时容纳多个元素。数组当中可以存储基本数据类型的数据,也可以存储引用数据类型的数据。数组因为是引用类型,所以数组对象是堆内存当中(数组是存储在堆当中的)。数组当前如果存储的是java对象的话,实际上存储的是对象的引用(内存地址),数组中不能直接存储java对象。数组一旦创建,在java中规定,长度不可...
  • java语言中的数组是一种引用数据类型。数组的父类是Object。
  • 数据实际上是一个容器,可以同时容纳多个元素。
  • 数组当中可以存储基本数据类型的数据,也可以存储引用数据类型的数据。
  • 数组因为是引用类型,所以数组对象是堆内存当中(数组是存储在堆当中的)。
  • 数组当前如果存储的是java对象的话,实际上存储的是对象的引用(内存地址),数组中不能直接存储java对象。
  • 数组一旦创建,在java中规定,长度不可变。(数组长度不可变)
  • 数据的分类:一维数组,二维数组,三维数组,多维数组…
  • 所有的数组对象都有length属性(java自带的),用来获取数组中元素的个数。
  • java中的数组要求数组中元素的类型统一,比如int类型的数组只能存储int类型,Person类型数组只能存储Person类型。
  • 数组在内存方面存储的时候,数组中的元素内存地址(存储的每一个元素都是有规则的挨着排序的)是连续的,内存地址连续。这是数组存储元素的特点。数组实际上是一种数据结构。
  • 所有的数组都是拿第一个小方框的内存地址作为整个数组对象的内存地址。(数组中首元素的内存地址作为整个数组对象的内存地址)。
  • 数组中每一个元素都是有下标的,下标从0开始,以1递增,最后一个元素的下标识:length - 1

 

  • 数组的优缺点:
    • 优点:
      • 查询/查找/检索某个下标上的元素时效率极高,可以说是查询效率最高的一个数据结构。
      • 为什么检索效率高?
        • 1、每一个元素的内存地址在空间存储上是连续的。
        • 2、每一个元素类型相同,所以占用的空间大小一样。
        • 3、知道第一个元素的内存地址,知道每一个元素占用空间的大小,又知道下标,所以通过一个数学表达式就可以计算出某个下标上元素的内存地址。直接通过内存地址定位元素,所以数据的检索效率是最高的。
    • 缺点:
      • 1、由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,效率较低,因为随机增删元素会涉及到后面元素统一向前或者向后位移的操作。
      • 2、数组不能存储大数据量,因为很难在内存空间上找到一块特别大的连续的内存空间。

 

注意:对于数组中最后一个元素的增删,是没有效率影响的。

 

定义语法:

int[] array;

double[] array;

静态初始化语法:

int[] array = {12,13,222,98};

动态初始化语法:

int[] array = new int[5];  //5个元素个数,数组长度为5

 

main方法可以接收用户输入的数据,使用String[] args数组。

 

java中对数组的扩容是:

先新建一个大容量的数组,然后将小容量数组中的数据一个一个拷贝到大数组当中。

 

结论:数组扩容效率较低,因为涉及到拷贝的问题。所以在以后的开发中请注意:尽可能少的进行数组的拷贝。可以在创建数组对象的时候预计估计一下多长合适,最好预估准确,这样可以减少数组的扩容次数,提高效率。

 

二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每一个元素是一个一维数组。

二维数组的静态初始化:

int[][] array = {{1,1,22,31,},{1,2},{3,55,7},{1,3}};

二维数组的动态初始化:

int[][] array = new int[22][46];

 

Object[] 这是一个万能的口袋,这个口袋中可以装任何引用数据类型的数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。