一维数组和二维数组的区别

一维数组,线性布局,单行单列,访问简单,连续内存,单层循环操作,动态扩展,适合线性数据。
二维表,矩阵结构,多行多列,访问复杂,内存行优先,双层循环操作,扩展逻辑复杂,适合表矩阵。
选择一维或二维,检查数据之间的关系,对于简单数据使用一维,对于更复杂数据使用二维。

一维数组的定义形式

等等,我在想昨晚超市的零食区。
薯片、饼干和糖果整齐地排列着,都贴着相同的标签,但各有自己的位置。
这不是像一维数组吗?第一个元素是薯片,第二个元素是饼干,第三个元素是糖果。
我一边买零食,一边心里默默数着,嘿,5 号是巧克力。
这是使用下标搜索元素。

今天,当我在咖啡馆点咖啡时,服务员问我要加多少糖。
我说“两勺”,服务员就加了两勺。
这类似于给数组的元素赋值。
咖啡是数组名称,糖是元素,两个勺子是下标,告诉服务员在哪里添加。
如果你说“请再加一点”,服务员可能会说“没问题”,但计算机做不到这一点。
我想要一个明确的数字,一个整数,而不是小数。

当我打开这本书时,我发现数组是内存中一系列连续的空间。
就像我书架上的书一样,都是从左到右按顺序排列的,不应该有空书。
定义数组时,说有 1 0 个元素就等于说书架上有 1 0 个位置,但这 1 0 个位置旁边可能有空位,而且不一定正好有 1 0 本书。
因此,1 0只是一个数字,而不是具体的空间限制。

在编写代码时,您应该始终首先定义一个数组。
不然就跟住酒店没订房间一样。
例如,int Score[5 ];定义一个包含 5 个整数的数组。
然后您可以使用scores[0]、scores[1 ] 访问它。
如果你把它写成scores[0.5 ],编译器可能会皱起眉头说:“为什么下标是十进制数?将其向上舍入。
”在这种情况下你只能得到[0]分。

最烦人的是你不能一次打印整个数组。
就像你不可能一次性把货架上的所有零食都装完一样。
就像去超市一样,你得一一拿出来,或者用一个循环,一一看清楚,一一拿出来。
这让我想起上次整理照片的情景。
如果您想将所有照片整理到电子相册中,则必须将它们一张一张地导入。
我们无法一下子把整张专辑都塞进去。

所以,一维数组看似简单,其实有点麻烦。
就像生活中的许多小东西一样,只有当你使用它们时,你才会意识到它们有多好,而当你不使用它们时,你就会觉得你不需要它们。
但我还是有点好奇。
如果可以一次操作整个数组不是更容易吗?

一维数组和二维数组的区别

说白了,一维数组和二维数组的主要区别在于它们的数据结构和用途。
其实很简单。
一维数组就像学生排队,都站成一条直线,而二维数组就像士兵排成方阵,都排成一个矩阵网格。

首先,最重要的是一维数组是线性结构。
我们去年做的项目中,我们用它来存储用户ID,所以大概有3 000条数据。
还有一点是,定义一维数组非常简单,即“类型标识符数组名[常量表达式]”,就像创建“学生数组[1 00]”一样。

我一开始以为二维数组是一维数组的扩展,后来发现这是错误的。
它更像是一个“数组的数组”。
去年我们使用二维数组来存储产品库存信息,格式为“类型说明符数组名称[常量表达式][常量表达式]”。

在内存分配方面,两者都需要通过new操作符来分配内存,保证分配正确。
在元素引用方面,一维数组是通过数组名和元素位置号来引用的,如: Student Array[5 ],而二维数组则由行和列引用,例如B.“商品库存[2 ][3 ]”。

等等,还有别的事。
很多人没有注意到这一点。
二维数组在内存中连续存储并按行排列。
这可以在处理某些特定问题时提高效率。

我认为值得尝试的是在处理数据时,根据数据的特点和要求选择合适的一维或二维数组,这样可以更高效地利用内存和处理数据。

Java 一维数组的定义和初始化

粗略地说,一维Java数组是一块连续的内存,存储固定类型和固定长度的元素。
使用起来很方便,而且长度一致。

我们先来说说最重要的事情。
定义数组有两种方法:在类型后面添加[](int[] arr = new int[1 0];)更清晰。
也可以使用变量名后添加[](int[] arr = new Integer[1 0];),但不太直观。
去年我们启动这个项目时,团队一致推荐第一个方案。
长时间看代码不容易犯糊涂。
还有一点:初始化有两种:直接空间分配,但不赋值(int[] arr = new int[3 ];,默认基类型为0,默认对象类型为null),这种情况很常见;或直接赋值(int[] arr = {1 , 2 , 3 };长度自动匹配值的数量)。
例如,在我们的测试过程中,有一个场景,我们需要快速创建一个 String[] langArray = {"Java", "Python", "Go"};。
直接初始化比手动分配轮廓要简单得多。

起初我认为数组一旦定义就不能更改。
后来我发现它确实可以复制或覆盖,但你不能直接改变长度——很多人没有注意到这一点,坦白说,这很令人困惑。
等等,还有别的事。
数组查找的效率为O(1 ),插入删除的效率为O(n)。
用行话来说,这称为雪崩效应。
事实上,前部的轻微延迟会降低整个后部的性能。

最好先了解这两个定义和初始化方法,特别是在直接赋值可以解决问题的情况下,你应该对此有经验,但要注意固定长度的缺点。