JAVA数组

数组

P47 用来存储一批同种类数据的内存区域(可以理解为容器);

表示形式

数据类型 [ ] 数组名 = {若干数组元素中间用逗号隔开};

为什么需要数组:

定义变量储存大量数据 太麻烦了 (代码过于繁琐,需要大量变量的定义,业务功能实现也很麻烦)

数组比较适合做一批同种类型数据的存储。

数组需要的学会的东西:

  1. 定义,如何存储数据,具体格式是什么样的
  2. 如何访问数组元素,怎么操作,增删改查?
  3. 应用数组解决实际问题,怎么结合数组解决比如随机点名这类实际业务;
  4. 数据内存原理,数组在内存中具体是如何去工作的

  1. 静态初始化数组(数组的访问,数组的注意事项)
  2. 动态初始化数组(动态初始化数组的元素默认值)
  3. 数组的遍历
  4. 数组的案例
  5. 数组的内存图
  6. 数组使用的常见问题
  7. Debug工具的使用

P48静态初始化数组

定义数组的时候直接给数组赋值

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

double[ ] scores = new double[ ]{89.9 , 99.5, 59.5,88.0}

//简化类型

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

int [ ]ages = {12 ,24,36};

数组的基本原理:

以上面的数组ages 为例, 数组名会在内存中开辟一片区域

数组内容会以连续的方式 12 24 36 以一个地址存放在内存中

Ages会对应地址名

当以数组名作为输出时:

其输出结果会是一个地址([表示这是一个数组,I代表数据类型是int,@后是十六进制具体地址)

数组变量名中存储的事数组在内存中的地址,数组是引用类型。

静态化是直接定义好内部元素的

那么如何访问数组中的数据

提供索引就是数组中元素的编号

数组名称[索引]

数组的最大索引可以怎么表示

比如一个length为3的数组,他的最大索引为2

数组名.length – 1 //前提:元素的个数大于0

 两种方式:

数组定义可以是两种形式

int[ ] ages =

int ages [ ] =

什么类型的数组存放什么类型的数据,否则的一定报错

数组一旦定义出来,程序执行的过程中,长度、类型就都固定了

经典错误:想要输出的数组内容超过边界length了

P50 数组遍历

遍历 访问每一个数据  在搜索、数据统计等等都需要用到遍历

遍历是一个个的将数据访问一遍

使用for循环 进行遍历输出

数组中的一些应用:

  1. 数组求和

  1. 求数组元素最大值

求出一组元素中的最大值,首先是一堆数据的数组静态申明 然后引入一个中间变量和数组中的所有元素进行对比,把最大值始终赋值给中间变量,最后输出中间变量。

3猜数字游戏.(数组动态赋值)

这个程序有几个明显的问题:首先是重复出现未命中,没有完全break掉游戏 (引入OUT break OUT)

代码有冗余问题 接下来是标准答案

Standard Result:

随机排名游戏

冒泡排序:

 数组内数据:5 2 3 1 从小到大排列

第一轮排查:5和2进行比较 5比2大 交换位置 2 5 3 1

5和3比较 5比3大 交换位置 2 3 5 1  再之后是2 3 1 5

第二轮排查:2和3进行比较 维持不动 再之后是2135

第三轮排查:1235

P52数组的内存分配 数组内存图

JAVA 对于内存的划分是很讲究的,分为栈、堆、方法区,本地方法栈,寄存器。

重点是对前面三类的描述:

通过数组代码理解下 在这个里面代码是如何运行储存的

方法区域首先会有一个class文件, 并将main方法提取到栈内存里

两个数组变量指向同一个数组对象

数组常见的使用问题:

  1. 如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数据索引越界异常)。

  1. 如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现NullPointerException(空指针异常)

 P53 Debug工具:

程序员用来观察和debug代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值