【数据结构】——-栈、队列和数组(三)

前端之家收集整理的这篇文章主要介绍了【数据结构】——-栈、队列和数组(三)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本篇我们来介绍下数据结构中的数组:


在程序设计语言中,数组是我们较为熟悉的一种数据类型。几乎所有的程序设计语言都把数组类型设定为固定的类型。


一、数组的逻辑结构和基本运算

数组可以看成是线性表的一种推广,一维数组又称为常量,

一维数组“:

官方解释:由一组具有相同类型的数据元素组成,并存储在一组连续的存储单元中的数组元素我们称之为数组。

二维数组:

若一维数组中的数据元素又是一维数组结构,我们称为二维数组。二维数组可以看成是n个列向量组成的线性表。

三维数组”:

以此类推,若一维数组中的元素又是二维数组结构,我们成为三维数组

N维数组“:

一般,一个n维数组可以看成元素为n-1维数组的线性表。

说了那么多官方的解释,那么究竟什么是数组呢?

举个栗子:


这群小蝌蚪我们就可以称之为数组。

数组的基本运算:

通常,数组只有两种基本运算:

1)读:给定一组下标,返回该位置的元素内容

2)写:给定一组下标,修改该位置的元素内容



二、数组的存储结构:

一维数组元素的内存单元地址是连续的,

二维数组有两种存储方法

1)以列序为主序的存储。

2)以行序为主序的存储。

在C语言中,数组采用的是以行序为主的存储方法,其他某些语言中,数组采用以列序为主序的存储方式。


矩阵的压缩存储中的特殊矩阵稀疏矩阵这里就不介绍了,感兴趣的可以自行研究。


下面才到我们这篇文章的重点:

三、JAVA中的数组

JAVA中的数组并不是很难的知识,但从语法上来说的话,只是很多程序员虽然一直都在使用数组,但往往对JAVA数组的内存分配把握的不够精确。相信通过本篇文章,以后我们在codeing的时候肯定会做到心中有数的。


1.数组的初始化

JAVA数组是静态的

JAVA是典型的静态语言,因此JAVA数组是静态的,即当数组被初始化之后,该数组所占的内存空间、数组长度都是不可变的。JAVA中的数组必须经过初始化之后才可以使用。

即创建实际的数组对象,在内存中为其分配内存空间,并为每个数组元素指定初始值。

数组初始化的两种方式:

1)静态初始化:初始化时由我们自己(程序员)显式指定每个数组元素的初始值,由系统决定数组的长度。

2)动态初始化:初始化时我们只指定数组的长度,由系统分配初始值。

不管使用哪种方式初始化数组,一旦初始化完成,该数组的长度都不可以改变。 JAVA中只允许我们通过数组的length来访问数组的长度。

提示:不要同时使用静态初始化和动态初始化。说白了的意思就是,不要在为数组初始化时既指定了数组的长度又为数组赋了初始值。


前面说道动态初始化数组 会由系统来分配初始值。

以下为系统默认分配值:

1)数组元素是基本类型中的整型类型(byte、short、int、long、)数组元素初始值为0

数组元素是基本类型中的浮点类型(float、double、)数组元素的值为0.0

数组元素是基本类型中的字符类型(char、)数组元素的值为\u000

数组元素是基本类型中的布尔类型(boolean、)数组元素的值为false

2)数组元素是引用类型(类、接口和数组)时,数组元素初始值为NULL。

提示:JAVA中的数组变量只是引用类型的变量,并不是数组对象本身,只有让数组变量指向有效的数组对象,程序中才可以使用数组变量。

数据变量和数组对象一定要区分清楚。(类似C语言中的指针。)

数组变量只是一个引用变量,而数组对象是保存在堆内存中的连续内存空间。对数组执行初始化并不是对数组变量执行初始化,而是在堆内存中创建数组对象——也就是为该数组对象分配一块连续的内存空间,这块连续的内存空间的长度就是数组的长度。

特别指出”:

JAVA中的数组在使用前必须初始化。JAVA的局部变量必须由程序员赋初始值,即使为NULL。

猜你在找的数据结构相关文章