JavaSE 第四章 数组

1、数组的概述

在执行程序的过程中,经常需要存储大量的数据,例如,假设需要读取100个数,计它们的平均值,然 后找出有多少个数大于平均值。首先,程序读入这些书并且计算它们的平均值,然后将每个数与平均值 进行比较判断它是否大于平均值。为了完成这个任务,必须将全部的数据存储到变量中。必须声明100 个变量,并且重复书写100次几乎完全相同的代码。这样编写程序的方式似乎是不太现实的,那么该如 何解决这个问题呢?

Java和许多高级语言都提供了一种称作数据(array)的数据结构,可以用它来存储一个元素个数固定且 元素类型下相同的有序集。数组主要解决多变量多数据的存储问题,方便程序后期统一维护操作数据。 数组的本质是什么呢?数组就是一系列空间大小相等且地址连续的一片存储空间。为什么空间大小是相 等的呢?就是为了方便统一维护我们的数据,必须得保证数据之间的类型是一样的。为什么变量空间的 地址是连续的呢?地址连续切大小相等方便计算后续元素的具体物理内存地址。

数组就是一片地址连续且空间大小一致的存储空间(但是每个空间存的还是其他数据的地址。数组存在于 堆内存中,但凡在堆中存储的数据都称之为对象。数组提供下标来访问数组当中的元素。数组变量存的 就是数组在堆内存中首元素的地址。数组通过下标来访问元素的具体计算方式是:所要访问数据的地址 = 首元素地址 + 下标 * 数据类型大小。数组一旦定义下来,其长度不可改变;数组中有几个地址?就看 数组有几个元素空间(数组的长度)。创建数组时必须明确规定大小或内容。

2、一维数组的使用

创建数组只指定长度但不指定内容 数据类型[] 数组名 = new 数据类型[长度];

创建数组指定内容(同时长度就确定了)

数据类型[] 数组名 = new 数据类型[]{数据1, 数据2, 数据3, ..., 数据n};

数据类型[] 数组名 = {数据1, 数据2, 数据3, ..., 数据n}

数组默认值

定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;

数组元素的引用方式:数组名[数组元素下标]

数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3]; 可引用的数 组元素为a[0]、a[1]、a[2]

每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数)

数组一旦初始化,其长度是不可变的

3、一维数组内存分析

目前关注:方法区,虚拟机栈,堆

栈stack:局部变量

堆heap:new出来的结构

方法区:method area 静态域 常量池 类的元数据

4、一维数组操作

1> 数组遍历

2>查找数组中的最大值和最小值

3>查找元素在数组中是否存在

4>数组倒着输出

5>数组添加元素,修改元素,以及删除元素

6>数组元素复制

5、二维数组

Java 语言里提供了支持多维数组的语法。如果说可以把一维数组当成几何中的线性图形,那么二维数组 就相当于是一个表格,像右图Excel中的表格一样。对于二维数组的理解,我们可以看成是一维数组 array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维 数组。

格式1(动态初始化)int arr = new int3;定义了名称为arr的二维数组二维数组中有3个一维数组 每一个一维数组中有2个元素一维数组的名称分别为arr[0], arr[1], arr[2]给第一个一维数组1脚标位赋值 为78写法是:arr0 = 78;

格式2(动态初始化):int arr = new int3;二维数组中有3个一维数组。每个一维数组都是默认初 始化值null (注意:区别于格式1)

可以对这个三个一维数组分别进行初始化arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值