00:00
好,那关于这个异位数组的使用,包括它的这个课后练习题,哎,咱们就写完了异位数组,大家注意一下,我们就讲这六个点啊,这六个点呢,就是需要大家下来掌握的,诶大家呢,你可以把我们这里边儿写的代码中的这个代码呢,你去掉,把这个注释留着你给大家都填上。哎,那就说明你这块都清楚的啊,那下边呢,我们来谈一谈这个叫多维数组的使用。那多维呢,又以二维使用居多,所以我们先主要的来谈一谈叫二维数组的一个使用。哎,叫做二维数组的使用啊,怎么叫二维数组的使用,我这块呢,你看也举了一个例子啊。就是之前的话呢,呃,咱们是这样的,比如说这个呢,专门的是造成一个数组了。来存储这个姓名。啊呃,然后呢,这块呢,也放了一个数组。看啥呢?这电话肯定不是真的啊。还有苍老师的呢,是吧?这是我随便编的几个啊,不要认真了啊。
01:03
这块的话呢,这个电话您可以专门的造一个数组去存这个电话。啊,这是相当于两个数字,那现在我们不这样怎么着呢,我把这个整体呢看成是一个数组。这个心思别别看到这里边儿了啊,说我有不认识的,你你别研究那个了啊。注意听我讲现在啊,嗯。就是我把整个这块呢,看成是一个数组。啊,整个看成是一个数组红框框的啊,那整个要是一个数组的话呢,这个就是我们角标为零的一个元素,哎,刘诗诗呢,就角标为一的,那就意味着的话呢,我们这。这个小红块呢,是作为其中的一项。这个小红泡作为其中的一项出现,然后刘诗诗上,这就是第二项,依次往后推。那这第一项你会发现,那我要是问哈,说第一项是什么类型。你咋说呀?
02:01
说string string什么呀。说水针有点牵强了,因为这里边儿你有俩呀。诶,这时候你看脑子清楚啊,再说一下,咱们前面讲数组的时候,说数组本身属于引用数据类型。数组的元素呢?可以是基本数据类型。可以是引用数据类型。数组的元素可以是引用数类型,那数组的数组本身呢?还是引用数据类型?那我问数组的元素可以是数组吗?这不就可以了吗?多么严密的这个逻辑啊,是吧?数组属于引用类型,数组元素呢?也是引用数据类型,那我这个数组的元素,我就是数组不是从逻辑上也能推得过去吗?哎,那就是什么叫二位数组呢?就是呃,先是一个一位数组,如果这个一位数组的元素还是一个一位数组。
03:00
我们整体上来看,它就是个二维的。就像这里边儿这个图一样。大家看整体来看,我说呀,我画红框呢,这是一个数组,这个数组呢是一个二维数组,为什么呢?因为这个数组的元素,第一个元素是它这个里边你一看发现哎哟又有两项。你不能说整个这一项是string了啊,我有俩哎,是两个string形的,两个string形,我就用一个数组去放你这两个string。所以说呢,就是由数组又构成的数组,就叫二位数组。哎,这个别晕了啊。啊,别晕了,那这呢,就是列了这样一个表格的一个图。啊,你看我这里边说对二维数组的理解,我们呢,可以看成是一维数组二一。又作为另一个异位数组俄瑞二的元素而存在的。诶,好像这个话前面有点类似的一个结构啊。
04:00
说我们啊,把一个循环啊,又作为另外一个循环的循环体出现啊,这叫嵌套循环,现在你是把一个数组又作为另外一个数组的元素出现了,这就叫做二维数组。哎,就是这样的结构。后边呢,我这又写了一句这个话说其实呀,从数组底层上来看,其实没有所谓的多维数组,这个大家怎么看待这句话呀。就像咱们前面讲签到循环一样,咱们说签到循环不是什么新知识。只不过你把这个循环放到那个循环里边了,说就要签到循环这个结构了。啊,那这个速度也是一样,我们那会儿也发过这个这个内存空间了哈,这是一个站。这是一个对我我我再重新画个图啊,这个事儿呢,需要大家呢清楚。啊,我简单画一下啊,这是一个站。这是一个对。咱们呢,在站里边,这不声明的是个数组叫二位一,咱们在对空间里边,哎,我这儿呢,呃,先这样写一下啊,我造了一个一位数组,先三个元素。
05:08
现在的话呢,这一个元素呢,它不是一个。基本数据类型了,它是一个引用数据类型,恰好呢,它是一个引用数据类型中的一个数组,那就意味着我这个指针呢,它又指向一个新的元素,这个新的元素它又是一个数组。然后这个呢也是一样,但它也是一个数组。有俩元素啊,这个呢,就指向这个了啊,这也是三个元素这样的。我们把这个呢,你就可以称作它叫二维数组,因为呢,它的元素还是一个一位数组。所以它就叫二维数组了。能理解不?哎,那从这个概念上来讲,说没有所谓的二维数组,为啥呢?因为你呢,其实你要你要说这个,呃,这个A21的话,其实它就是一个一位,只不过它的元素又是一位了。它其实还是对应的是这个结构,只不过咱们把它称作呢,你的速度是元,你的元素还是数度的,我把它叫做二维的了。
06:03
实际上的话还是它就是一个普通的数组,只不过它的元素恰好又是一个数组而已,所以呢,没有什么新的知识。只是说呢,这个结构呢,大家可能没有见过啊。哎,没有体会过,行,这是咱们先从这个概念上呢,大家来体会一下这个事儿啊,然后下面的话呢,咱们看一下这个二位数组的具体的使用,诶我在这儿呢,再去新建一个Java文件。哎,AR test我写一个二。诶,我们叫二维数组的一个使用。哎,先这块呢,做一个简单的理解啊。哎,就是我们刚才看到的这个事儿。CTRLC。哎,我们拿过来。行,哎,大家呢,去体会一下这个意思啊,实际上呢,就相当于是我们一个数组的元素又是一个数组,它就是一个二维数组了啊。
07:07
那接下来我们关于二维数组的一个学习呢,咱们这儿呢,也得有这六个点。啊,也是这六个点,哎,CTRLC咱们呢,看一下对于二位数字来讲,哎,这六个点呢,我们怎么去理解。好,CTRLS一下,这个是一个二维的啊。来这块呢,咱们来测试,首先呢,写一个main方法。啊,第一个二维数组的声明和初始化。这个二位数组声明和初始化其实跟一位数组类似。那我们这块呢,举例子啊,这个一维的话呢,咱们先举个例子。
08:05
哎,你有一个特。我这呢写其中的一种啊,这个叫静态初始化了,然后呢,我们来看一下这个二维的。这是一维数组啊,然后对比着我们看二维,二维的话呢,In的形。这一个中号呢,就搞不定了。得需要两个中号了。哎,然后呢,A1又一个in的形,这也得是放俩。那上边呢叫静态,咱们这儿是不是也得叫静态,写一个是吧。那这块呢,大家想想这块怎么写啊。二维数组是不是由数组又构成的数组,所以这里边儿呢,你可以诶再有一个中号,比如说123。逗号一下。1245。再逗号一下。比如说678。哎,这呢,就是一个二维数组。
09:02
而且呢,它还是一个叫静态初始化啊。看一下,看能不能看得懂。你看它本身就是你你整个来看,这是一个大括号,这里边儿呢,这是不是就算数组元素了。但是它的元素呢,你会发现它是不是又是个输珠。哎,就这样理解呗。既然这是作为外层的一个数组的元素出现的,所以中间用逗号隔开,你里边呢,又是数组,那你里边还是逗号。就这个意思呗。就是这样啊,这叫静态初始化,然后接下来。叫动态初始化。动态的话,哎,我们再接着举例子,比如说我这写一个string啊,STRING2维数组,大家就数这个中括号有几个,你就知道是几维的了啊。A22等于new一个。
10:00
所谓的动态初始化呢,就是不要赋值对吧。不要赋值,那这块报错了,我是不是就把这个填上就可以了。啊,写了一个三,写了一个二,诶这呢就对了。那这个三跟二,它这个从内存上大概是一个什么意思呢。对,我先简单画一下,大家脑子里边有这个形象哈,这是占这堆,然后这个位置呢,就咱们这个AR2,哎,我指向这个堆空间先呢,是一个三个元素构成的一个数组。对对,然后每一个这个位置呢,它是不是又是一个数组啊对,然后这个呢,每一个呢,它有两个元素。怎么着?对呀,就是这个跟这个不一样嘛。
11:01
这个的话呢,就是我从外整体来看的话,我这也有仨元素,但是我每个元素里边个数不一样,我这有仨,这有俩,这个有仨。就是没有要求说每一个里边非得个数都得用一样的。只不过这个恰好一样而已。啊,是这样啊。诶是这样的一个情况,所以这个三的话呢,你就知道,就是从外层来讲的话呢,它是有三个元素,然后呢,外层的每一个元素呢,它就分别是一个长度为二的一个一位数组。是这个意思。那大家其实也刚才看到了,我在刚才写的时候呢,你发现我其实把这个。三起来的时候呢,这个程序你看就已经不报错了。哎,我后我后边又补了个二的时候呢,他也没有报错啊,实际上呢,这是动态初始化的两种方式。诶就是一个呢,你把这个这个咱们也可以给它叫成行数吧哈,诶这是一个行,你这个也可以看成是个列哈,诶把这个行呢,这个列呢,我也都写上了,然后这个位置呢,光写行没写列也行。
12:07
那列列这这是啥情况啊。没写是吧。没写就相当于是咱们这还是占,这还是对你这块那个变量过来以后呢,先是给我写成数的吧,先是不是就放了这有仨呀。然后杀后边这块有几个呢。还不知道呢。对,还没有给它赋值呢。啊,你要写个二呢,那不就相当于每一个呢,这不都指向两吗?诶,我没写,没写就相当于还没有付呢。啊,这是我们还是又回到上面这个啊,下边这个没有写,没有写这句话就没有他而已。这两个呢,都叫做动态初始化。那相对应的呢,就还是有一些这个所谓的叫错误的情况啊。那除了正确的,那就都是错误的了。那比如说呢,你把这个CTRLC粘过来,这个改个名叫四,然后这个呢,不写前面这个三,把后边这个写上了,这是不行的。
13:03
这这不行啊,诶这个甚至呢,你在前面这块去补,这这都不OK。CTRLCCTRLV这块呢,写一个四写一个三这种的,这这后边这个不写的,这都不对。哎,这都是错的啊,或者呢,有的是你想着把这个给它合成一个的。这边呢,来一个来四来一个三,像这种。哎,就是这这其实什么也不是啊,哎,就是凡是我们看到前面这块,你附上这个长度的,后边呢,就不会赋值了,然后后边附上值的呢,长度就不要有了。那因为呢,基本上这个你这种写还是这种写长度就都确定了啊,不用两个都有,所以这都是错误的啊。啊,都是错误的,那还有这个正确的情况,上面咱们写的这个是比较标准的哈,还有点儿稍微的变化的,嗯,能咋变呢。
14:04
诶能咋变呢,就是这个啊,这个中括号呢,咱们第一天讲位方法的时候,稍微提过一下啊,这个中括号呢,其实咱们呃先我改一下,改成一个四啊。这个中括号呢,你可以把这俩都放到后边。这是可以的啊。或者有同学呢,就故意的写的怪怪的啊,就是我前面放一个,后面放一个。这也行。这也是二维的啊。这呃,对,咱们一维呢,刚才也是一样,一维呢就是咱们刚才写的,嗯,在这儿,哎,我把这个中号呢,我就放在这儿。也行。嗯,放前面也可以,然后再往前放,这就有点扯了是吧。放在这儿啊,你放到类型后边或者是变量名后边都可以啊,那你要你有俩的话呢,你就是前一个后一个也行。但是你别看错了啊,这是个二维的。哎,注意这个事儿。嗯,这是一个正确的情况,然后呢,嗯,还有一个啊,就有同学可能会见过,那我们这块就说一下。
15:08
注意注意看啊。像这个的话呢,我们这不是都给它拗好了啊,扭好以后呢,其实后边这块你会发现我们是一个int型的二维数组,你后边呢,再去拗一个in特形,就是这块你也不可能去写别的了。既然你又不可能去写别的了,那我这块干脆呢说是不是可以省略掉。啊,也是可以的。哎,你要这能省,那是不是刚才也能省啊。哎,一维这块,诶这不能省啊。这这个是不能上的,要省的话呢,也是这个,呃,先别说他先说。没得说了。没举这么多例子是吧?啊,也是正确的这个写法。这个啊,印的行A4。
16:00
是下边有不。等于你一个你的星。那12345。啊行,这呢都知道这是正确的啊,哎,我这个位置呢,我可以给它删掉。把这个呢,我们称作叫类型推断。就是你前面呢,标准的来讲,就是咱们刚才说的啊,这呃,像这样,后边你加上这个,这都是标准的啊,标准的写法,那又因为呢,你前面是一对型的数组,下边呢,你也不可能去逆用其他类型的了。所以呢,就可以呢,说诶省略也可以。这就是正确的。那有同学可能说,哎呀这能省,那那是不是就刚才这个能省了呢。这块呢,还不能上。哇,晕倒了。嗯,这个讲了好多细节哈。对,这个不能省,是因为呢,你这俩分换行了写了。你要写到一行的话呢,它能推断出它是这个类型的,你换成两行了,它就推断不出来了。哎,所以这种写法你不能去掉啊。
17:03
嗯,然后这个呢,是可以给它去掉的。做成一种特殊情况啊,大家单独的去理解一下就行了啊,标准的写法,注意标准的写法呢,还是这样这样这个这样写,呃,然后这块的话呢,你可以写成一行没问题哈,写成一行的时候呢,把这个new int也加上,这是标准的写法。简写的话呢,就是只有在一行的时候呢,可以省略前面啊。哎,就类似于我们说的这里边儿的这种,这呢不算是标准的,标准的话呢,是这种。这也是一个标准的,这也是一个标准的啊。这呢,也是正确的写法。关于初始化,我们就先说到这儿。
我来说两句