零基础学java05-数组(一排盒子)及遍历(翻盒子)

15 篇文章 0 订阅
12 篇文章 0 订阅

数组

概念

百度图片找到一张图,通过这张图搞懂数组。

1、数组的定义

数组的定义格式:
格式1: 数据类型[] 数组名; 例:int[] nums;
格式2: 数据类型 数组名[]; 例:int nums[];

重点:
搞懂数组就要先明白JVM的内存是如何分配的,进而明白数组的特性是怎样实现的

JVM把内存划分成5片区域:

1、栈内存:栈内存主要是用来运行方法(函数)的。在栈内存中定义的变量(在函数中定义的变量),不初始化(就是没有赋值),是不能直接使用的。

2、堆内存:在程序中使用new 关键字创建出来的所有东西,都会保存在堆内存中。堆内存中开辟的空间,不赋值,都会有默认的初始化数据。

整数:默认是0
小数 默认0.0.
boolean 默认是false
char 默认是 ‘\u0000’

3、方法区:JVM在加载class文件的时候,所有的class文件就要加载在这个内存中。

4、本地方法区:和系统相关

5、寄存器:给CPU使用的

故数组是通过new 关键字创造出来的,它保存在堆内存里面,不赋值,也有默认的初始值。而初始化之后,新赋的值会把原有的值覆盖,而获取其值是通过调用地址值实现。

把数组理解成一排有编号的盒子,这个编号是从0开始的,下图中右括号中为3,即这个数组的长度为3,就是说有3个盒子,那编号就是 0,1,2;arr[0]的意思就是调用索引为0的盒子里的东西,这个盒子里可以是数字,字符串,数组等等,可以说是个万能盒子。

栈内存如何找到这个索引为0的盒子呢,它需要存储这一堆盒子的地址,也就是图中的0 x 0056,具体这个地址是多少呢,由jvm虚拟机自动分配的。

所以读取数组中的数据就可以理解成这两个过程:

调用地址(找到一堆连放的盒子)➡️通过盒子的编号(找到一堆盒子其中一个之中放的东西)

在这里插入图片描述

数组初始化

一开始数组中是有默认值的,上文中讲过:

整数:默认是0
小数 默认0.0.
boolean 默认是false
char 默认是 ‘\u0000’

所以有两种初始化方式(初始化就是赋值,因为一开始有默认值,不赋值也有,相当于电脑自动赋值和我们人工赋值两种)

1、动态初始化(电脑自动赋一些默认值,等待我们再用新的值覆盖它,所以叫动态初始化嘛)

格式:
数据类型[] 数组名 = new 数据类型[数组长度] ;
代码例子:
int[] arr = new int[4];

2、静态初始化(我们人工赋值,这些值就确认下来了嘛,所以就静态初始化)

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};

举例:
int[] arr = new int[]{1,2,3};
解释:
定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
其实这种写法还有一个简化的写法: int[] arr = {1,2,3};

遍历(就是一个一个按顺序翻盒子里的东西,翻完一遍需要的就拿走)

数组的遍历:
遍历:把数组中所存储的所有元素都访问一遍。
访问数组的元素需要使用:数组名(找到抓哪一堆盒子)+数组的下标(这堆盒子里具体要抓哪个盒子的东西),才能访问到数组的每个元素。

怎么翻盒子——找个工具

用for循环来翻,如下图的意思是
int i=0:从0开始翻;
I<arr.length : arr.length是数组的长度,这是一个数组的方法,索引从0开始,翻到arr.length-1就结束了;
I++,每抓一圈i自增一次,这样等到i增加到=arr.length-1的时候就遍历完了(都翻过一遍了)

注:i是整数,所以 i<=arr.length-1等价于I<arr.length
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值