8.数组相关
当我尝试着去表达和总结,我才发现说清楚很难,从宏观知识结构到单个细节知识点。
多多思考,并且在大量实践的基础上体会总结性文字的意义,
如果一片空白去咀嚼总结性文字,并不能有效吸收,而且会显得乏力。
动手操作是最重要的,可以填补很多,留下重点思考记忆。小白的话,需要花相当的精力用来出来常识性的知识点。
最大的问题不是不知道怎么做,而是一直在学怎么做却不付诸实践。
一、一维数组
1.为什么会出现数组这种数据结构?
=》如果要定义是个相同类型的变量,如果按照一般的定义方式,就需要有是个变量名。但是用数组方式来定义,只需要一个变量名。 int[] a = new int[10];
1.1 数组是一个固定长度的,包含了相同类型数据的容器。 Java学习第9天——一维数组的声明与创建 - 知乎 (zhihu.com)
2.数组的定义方式有什么特别的吗?
=》结构相同和普通变量一样。符合“ 变量类型 变量名 = 变量值 ”的结构,将int[] 看成一个整体,代表的是元素值为int型数组的数据类型。
3.声明和赋值有什么区别?
int[] a; 声明了一个数组变量。 []表示该变量是一个数组 int 表示数组里的每一个元素都是一个整数 a 是变量名 但是,仅仅是这一句声明,不会创建数组
https://zhuanlan.zhihu.com/p/78656529
4.两种初始化的方式
5.数组的一些总结
对数组变量和数组的概念要区别清晰。
二、内存分析
声明的时候,数组并不存在,声明的数组变量名是存放在栈中的;
创建的时候,会在堆内存中开辟一个空间,并将栈中的数组变量名指向这片空间;
此时若没有赋值,那么内存中存储的都是默认值,对int类型而言,存储的全是0。
四、二维数组
二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
(一维数组中的每个元素的是一个基本类型的值,二维数组中每个元素存储的是个一维数组)
二维数组可以在逻辑上抽象为一个矩阵。以上图为例:二维数组存储的元素 arr[0] 和 arr[1] 是行,而每个元素中存储的值是列。
如果需要和数学中的矩阵对应起来,那么需要将二维数组的抽象再逆时针旋转90度,那么直接和数学上熟悉的矩阵样式对应了。(当然,行的顺序需要调整下)
需要注意的是,有时需要将二维数组中存储的元素作为方法的参数传递到辅助函数中,此时应对二维数组存储的元素和每个元素存储的值区分清晰。