java定义数组并赋值_【Java视频教程】day07-数组

b59bb3b31ab2e479dc89c9cf8b6ba65e.png

数组

问题引入

需求:计算一个班级100人的考试总分;

b28d0f4948df48017f6ccdb0390afb0c.png
  • 数组的概念

数组,就是一种容器,它可以保存多个相同类型的数据;而且数组一旦创建,容量不能更改

数组的定义格式

数组使用[] 表示;定义格式是:

数据类型[] 数组名(变量名) = new 数据类型[数组的容量];

26b1de45453e9d5b0583e5d7cd791c55.png
int  arr[]		=  new  int[10];
int  []arr = new int[10];
  • 数组的使用

数组元素的存取&数组的索引

3891d3f3bc299ae6e5265f2e58c109b6.png

8ac47ffe5aec21aa946e79ce9e44429f.png

结论:

  1. Java中,数组都具有索引,索引实际上就是数组中每个存储单元的编号;
  2. 向数组中保存数据和取出数据,都是通过索引进行的;
  3. 索引的特点是:
  4. 从0开始,依次递增;最大索引就是数组容量减一;
2b142542281367e01a8ff2a60259eb43.png
https://www.zhihu.com/video/1065359391645093888

数组的遍历&数组的length属性

在每个数组中,都有一个length属性,表示数组的容量;

使用方式是:

数组名.length;

注意:因为数组一旦创建,容量就固定不变,所以数组的length属性也不能改变;

d1a77b45a6a6b8e09d2a8dd9e0ad48c6.png

3d8816c9baba50c2422e6a369445664e.png
621f6a08b4c36f3fa042862afb8fdd03.png
https://www.zhihu.com/video/1065359611183321088

如果对数组的操作(赋值或者取值)没有规律,那么就不能使用循环来简化;


数组的内存原理(了解)

  • java的内存组成

40e6c33113f5e9838dacb70296df2c4a.png
  • 数组的内存图解

需求1:画出下面代码执行的内存图解:

public 
  • 内存图解:

7ed8533f3c368cc7fc1f94ce93c6b16b.png
8349d6493d03d2a9e8480a71a62d5fc9.png
https://www.zhihu.com/video/1065366100199575552

需求2:下面的代码执行结果是什么?为什么?

public 

2315f2cf548c860a0c771c87257d3832.png

4d7cdd4c19ae9c798a028799c01e4caf.png

结论:

如果一个变量中保存的是实际数据本身, 这个变量就是基本类型变量;

如果一个变量是引用类型的变量,变量空间中保存的就一定是一个内存地址(或者是默认值null)

8e533e5711dc0a9f12f450cd5b963109.png
https://www.zhihu.com/video/1065366155744641024

引用传递和值传递

8b5fc771927c451f7da201c85de40e45.png

如果是引用类型的变量,那么在变量中保存的是堆内存中的空间地址;

如果是引用类型的变量进行赋值,实际传递的是保存在变量中的地址,像这种传递数据的方式就叫做引用传递(传递的是内存地址);

如果是基本类型的变量进行赋值,实际传递的是保存在变量中的常量值,叫做按值传递;

因为值传递传递的是实际数据,所以不同的基本类型的变量的修改,相互之间没有影响;

应为引用传递传递的是堆内存中的引用地址,所以如果不同的变量保存的是相同的引用地址,那么他们都指向同一块空间;任何一个变量对空间的修改,都已影响其他变量;

17d28f594debf752076fe7f795d5752f.png
https://www.zhihu.com/video/1065366404538175488

数组使用中的常见问题

NullPointerException

70e578ca7c6a10e0fa1be7575ea4802e.png
36361c109b393a905676dbcff0d97711.png
https://www.zhihu.com/video/1065366669953683456

ArrayIndexOutOfBoundsException

e053a5232691608a3d746835215fc68f.png

当试图使用不存在的下标(超出范围的下标)来操作数组的时候,就会出现这个问题;

860f0e0065cef04252965c4716ec543c.png
https://www.zhihu.com/video/1065366747326017536

数组的第二种定义格式

  • 数组定义格式:
数据类型[]  数组名 = new 数据类型[数组容量];
数组名[索引] = 数据;

如果在定义数组时已经知道数组中会保存什么数据,就可以使用另一种定义方式,在创建数组的同时将数据保存在数组中;

格式:

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

注意:使用这种方式,不能在中括号中写数组的容量;

632ef7391dd9cd50d521304298d9a828.png

这种定义格式的简写形式:

数据类型[]  数组名  =  {数据1,数据2,数据3,数据4……数据n}; 
注意:简写只是为了书写方便,实际上编译器还是会加上new 这一部分;
注意:使用简写形式时,不能将数组变量的声明和赋值写成两行;

fca7f20b959938cb219e18bd82e8549e.png

9a31b895caf73006b46d3d62ba14691e.png
b9c2a289503abed2c3175f1c5a700fa6.png
https://www.zhihu.com/video/1065367103267344384

数组的练习

  • 数组平均值:

例子:求下列数字的平均值:1.0,2.4,3.5,4.3,5.1,6.8,7.2,8,9,10

aa338400c72242f18486f0274682dd1d.png
18d53c5a48e98891ef0e632c676a0c85.png
https://www.zhihu.com/video/1065367217994096640
  • 数组求最大值

例子:求下列数字的最大值:1.0,2.4,3.5,4.3,5.1,6.8,7.2,8,9,10

49aa1f11152f71cb01693bb9efe5471e.png

074b1ed7980aa66bad5e2bcfc3fd8e90.png
b88694c80aa31417abde8e593762cd5c.png
https://www.zhihu.com/video/1065367366455656448
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值