00:00
好来咱们接着来看哈,那么回到这块二维数组呢,我们把这个第五个点呢,已经攻克了,下边来看一个更难的哈,诶二维数的内存解析,其实这块难的话呢,只是因为呢,内存结构呢,我们以前没有这个概念,没有接触过啊,那么从我们讲完这个事儿的以后呢,其实他对于之前这个理解呢,反而是有好处的啊,从这个角度来讲的话呢,其实这个事儿我们讲讲是挺好的一个事儿啊。呃,那么二维数组内存解析还是看我们这个PPT了,这个PPT过来以后呢,呃,首先我这块呢,画了一个二维数组,一个内存的一个,呃,形象的一个理解啊,呃,什么叫形象理解呢?你比如说我这样写的,我写的是三,写的是个二,这是我们的动态初始化的一种方式,呃,你呢,就可以想象成是三行两列哈。啊,你就这样呢,去理解一下就行啊,就好比呢,是我们这呢写了个三,然后呢,每一个外层元素呢,都是创建这个长度为二的一个一位数组。那就这样。哎,你就这样来想啊,然后这个的话呢,我们这块呢,也是写了一个三里边儿呢,诶每一个外层元素指向的这个异维数组能看长度不一样。
01:05
一个是俩啊,一个是三个,一个是四个,那就长这样。那A201,那其实呢,就在这个位置了,你可以理解成就是第一行的第二列。哎,就这个位置。那稍微的形象点,大家去体会一下,OK,行,然后的话呢,我们正式的来看一下这个二维数组的内存结构啊,它的这样一个情况啊,好,那么首先呢,我这块呢,是以string形的二维数组来说明的,在main方法当中里边我们定义的这种变量啊,其实就叫做局部变量了。啊,什么叫局部呢?有人说呢,呃,天气预报说说局部地区有雨是吧。呃,局部地域就就那一块,它就作用在那一块区域,呃,这个呢局部呢,指的就是限于你没方法内部的啊,你的这个大括号的作用域内就叫局部变量啊,这个变量的话呢,叫A21,自然而然呢,就在我们没方法啊,就我们一调这方法的话呢,其实就是一个战争。前面稍微提到过这个概念,我们再说一下啊,战争呢,就是这里边儿这个红框了。
02:03
啊,里边这个红框啊,好,那么这个红框里边呢,我们去分配这个变量,这呢叫A221。行就摆到这儿了啊呃,A1放在这以后,哎,接着啊,我们拗一个string的一个数组,我们说呢,拗出来数组元素呢,都在堆空间里呢,哎,这块你注意啊,咱们不是上来呢,说诶是不是就这个样子呢,我们整个一大片是吧,说那画了有三行,然后每行有俩元素。不长这样啊,说这块一直这多好看是吧。不长这样,要长这样的话呢,那就是真的有二维数组存在了。啊,咱们不长这样哈,咱们长的话呢,就是它其实指向呢,还是一个一维的数组。啊,三个是吧。这样啊。诶,或者放到这儿。然后呢,它也会有一个地址值。
03:01
哎,这个呢,比如0AABB啊。行,那么这个地址呢,就给了我们这里边的A1了啊,它呢就是0X aab。所以呢,这个赋值符号呢,呃,就是还是我们原来的那意思啊,你你这块呢,是有什么我就赋什么,这块是个首地址值我赋过来的,进而的话呢,我们就可以呢,通过这样一个地址指向了你对空间里边的这样一个数组了。还没完事啊,注意这个时候呢,我们呃有三个了啊,后边这个二呢,也给写上了。啊二也写上了,那就说明我们现在这个数组里边的指定的这个位置呢,是一个死锥形的异位数组了,一位数组呢,是不是又指向他们各自的一个新的数组是吧。呃,新的数字的话,我们还得再去提供一下,这个我就横着放了啊。你就别问说为什么那个竖的,这个横着呢。我要读竖的话,这个可能就有点儿放着不好看了哈。我就给它横着放了。哎,这呢是一个是吧。然后呢,下边这块又一个。
04:00
在这块下边呢,又一个。那这样啊,然后呢,这三个的话呢,不都是有具体的地址吗。诶,这个我们再写个0X,比如说3344。诶把这个三四呢,我们就附到这个位置了,实际上这个位置你要细说的话呢,以前它也是个no。然后呢,你这块呃,有了两个元素以后呢,把这个首地值给了它,所以这块我们就指向0X叫诶3344,诶就这个道理。那么进而我们第一个元素呢?这不就指向它了。哎,那么其他的这个也是同样的道理啊,都会有这个具体的地址值。哎,这样啊,这个我就把这个地址我就写到这儿啊0S,比如说呃,44455。啊,0S。5566,哎不一定那么整齐了是吧,哎这个就哎这样的,我特意呢,不给你写成有规律了啊。行,然后呢,这块我就把这个给省略了,注意啊。
05:01
哎,我给省略了,其实一定是有的,好,那么还没完事呢。这个呢,你是回归到这儿了,它是不是string类型。那词缀类型呢,我们说呢,是引用类型了,这是不是就闹了。对的啊。全是no。保存一下,我说呀,第一行代码就长这样了。好,那基于这行代码,所以呢,如果我们是打印A21是有地址值的,打印它打印它打印它都有地址值。咱们刚才不是也讲了这个所谓的默认初始化值啊,外层元素呢,是不是都是地质值,内层元素呢,就看你这儿了,全是no。就完事了啊。接下来我们又int一个啊,这个这个int类型的一个二维数组叫AR22啊。就他。行,然后A2呢,这边又指向了一个新的数组。嗯,这个我们再去插入一个数组,这呢是四个。
06:06
哎,这个我们给他就放到这儿了。OK,然后呢,它也会有一个地址值。嗯,自己来吧。诶0X,比如8899。嗯,往这一放来,把这个地址呢,给了我们这个A2。行,进而的话呢,通过这个地址指向了对空间里边的这样的一个数组。哎,那么。这一行,哎,这一行,这个其实我们再可以补一下的话呢,就是这里边儿把这个no写上。那因为你看它后边这个呢,是没指明的啊,所以这就no,诶这呢,就是我们刚才说的这个默认值的时候呢,如果要去打印它的A20。这不就都是no吗?嗯,OK。行,那接着啊。
07:00
这个AR21A21不就是这个吗。哎,把这个呢,我们给他拗了一个数组。嗯,五个是吧。插入。五个。这个稍微再给它移动一下啊。那就这样的。有点急啊。啊,这块我们也给他来一个地址。哎,这个我们就,哎,我就这边随便写一个啊abcd啊,你别来个abcd哈。最大到F是吧,嗯。对,16进制的啊。行,然后呢,把这个给了我们的A给了这个位置,所以把这个呢给它覆盖了。那这个就是0XABCF。
08:05
我怎么给他个长度是五呢。他太挤了是吧。嗯,这个再往前一点点啊。行啊。好,那么有这个地址,那这样的话呢,我们这个指针啊,这不是通过它呢,这就指到这儿来了。哎,没问题啊,呃,还没完事呢,这个呢,因为你是in的类型的五个元素,所以这呢默认值。都是零。哎,这零好,诶这还可以更小一点啊。嗯,OK啊行,这就比较清楚了,呃,那接下来的话呢,就这行已经搞定了啊,下边呢,我们通过这个A211复制为1A1是这一项,它呢再指向它里边的一,那就是第二个元素。
09:01
把这个元素。给它抹掉,改成一。哎,这个改成一了。哎,就他。嗯,在这啊。行,那么这个改成以后呢,接下来再看下边AR2叫二二。改成一。这个看行不行啊,A2找这个角标二的,那就这个。他呢,再去找它下边的角标为二的那个元素。不存在是吧,哎,所以这个位置呢,就会报错。哎,报的是什么错来着。诶控制帧异常是吧,因为这个指针呢,不存在嘛,诶就报错了啊行这呢,就我们目前看到内存中这样的一个整体的结构了。哎,这个呢,稍微的哎,注意一下啊呃,大家呢,就严格遵守什么呀啊首先呢,数组的名我们是放在站里边的。然后呢,右边这块我们创建的时候,注意其实都是一个一位数组啊,只不过呢,你就看一下这个数组的元素是不是还是一个数组而已了。
10:05
啊,那么这个,嗯,它如果要是个数组,那就是个引用类型,那就放地质值或者放no了,赋值了那就是地质值,没赋值那就是no。啊,那就指向一个新的,新的你看就几个元素,几个元素你就开辟空间,是几把地址呢给过来,这就是基本的原则,只要按这原则往下跑,这个都错不了。这是我们的第一个。好,CTRLC一下啊。所以我们把它粘到咱们的这个位置啊,CTRLV。哎,二维。哎,二维啊,数组的一个啊,内存的一个解析一啊,诶大家呢,直接看我们的课件呢就有了,好接着我们再看下面这个。啊,另外一个啊,呃,首先一上来A21这那说四这个呢,位置没有写。好。ARE。哎,这么着。行啊,然后呢,右边用了一个长度为四的啊,直接插入一个这个我们是四个元素。
11:08
那这个我往这一放啊。好,这呢有个首地址值。嗯,在这个位置啊,A0X这个我们叫aab吧。诶把这个地址呢,付给我们这个A21。哎,这个往这移一下。OK啊,通过这个地址我们就指向了啊,你对空间里边的这样的一个数组,好,然后呢,因为你这个数组呢,它的元素,你看这是一个数组了,它的元素呢。是一个异位数组,所以说这呢就是一个啊,就是数组元素,这往前看嘛,你这个异位数组,所以这呢就属于引用数据类型,引用数据类型呢,这块你还没有写具体的这个是几,那这块呢只能是。闹吧。诶跟我们刚才上面一道题目呢是一样的,那接下来这个A210NEW一个int,这个是三啊,我们再整一个长度为三的,这个我就横着放。
12:11
嗯,这个比如我们就可放到这儿了啊,它呢有一个地质值。我们再去画一个啊。诶0X,比如说5566。然后把五六呢,我们给了看清楚,这个零就是给的这个位置啊。把这个给他干掉。嗯,在这儿。0X5566。变得小一点,诶可以了啊好,那这时候我们还是通过这个指针呢,就指向它了。啊,再接着这个呢,是int类型的三个元素,这是int类型了,所以这的默认值就是零。这一行就搞定了。嗯,对吧。
13:00
OK啊行,那再接下来A211啊,那就是我们这个位置哈,它呢指向了一个这样的一个数组长度呢,诶是三,然后呢,显示复制为123。那我就不妨我就借用一下吧。那直接我们再来一个是吧。嗯,再来的话呢,它呢,其实也会有一个地址。这么着啊,地址呢,我们也给他抄一份过来啊,这个我们得换换了啊AB。AB66啊,哎,他把这个地址呢,给了我们的这个位置。嗯,AB。六六好,然后呢,我们就这样指一下。哎,这样纸啊,哎,我们这儿呢,是一个静态。初始化啊嗯,其实你要细讲的话呢,其实也有最初的三个零,只不过呢,我们很快的就拿显示的123给覆盖掉了。所以我们接下来啊,就做这个覆盖的这个行为了。
14:10
哎,这个改成叫123。二。三好,那那么这一行是不是就完事了?嗯,接着啊,接着的话呢,我这A2102啊,这个你看这块呢,如果你要重看代码,可能有点懵,这个你画画图呢,可能更好一点,零那就指向这个位置,二二往下走是不是这个位置。把它改成五。哎,这个改成五。嗯,这是五。嗯,这个我把它放到下面这吧。行,那这呢,我们就改完了啊,完事了,好接着啊A21呃,然后呢,AR1是它它是一个二维数组,又重新指向一个新的二维数组。
15:05
就相当于原来这一套呢,都不用了。啊,又重新的插入一个啊,长度为二的。诶,把这个呢,我们往这儿移一下啊,哎,这儿呢,它会有一个新的地址。对,只要呢,我们看到在代码当中出现这个new了,就表示新开辟空间的意思。啊,这个33AA。诶,好,把这个地址给了我们的A1,那这个呢就不是a ABB了。把他那给他抹掉啊。嗯,换成我们刚才这个的。三三。A。哎,就换成这个了,进而诶,我们通过这个地址,哎这块你就指向了是新的这样的一个数组,那原来的这个指针呢,就不存在了。这就没有了。
16:01
呃,这个指针要没有呢,这块其实就没有任何数据指向他了啊。对他呢,就要被回收了,他一回收的话,你这个指针跟着这里边的元素不也跟着就没了吗。这也没有别人指他了,这这也是垃圾,所以这样就全都诶会被回收掉啊好,然后这个还没说完呢,这个呢指向他了,然后呢,这个是个二,然后这个位置没有纸,所以这是。At now。哎,这是闹行,然后呢,你下边你再去给他呢,再去像类似于上面这样去复制都可以哈,这个呢,就是我们画的第二个这个图。哎,到这儿啊,CTRLV。啊,Shift f6。哎,二维数组啊的哎,内存解析2OK行,那么关于二维数组呢,我们就呃内存结构就说到这儿了,这个刚才我画完之后的话呢,诶大家你可以思考一下啊,是不是有助于啊回过来,诶我们刚才讲二维数组使用的时候呢,这个第二个点诶调用外层元素,这个调用内层元素,你看这个呢,诶怎么有的时候呢是地址值,有的时候呢是个数据,有的时候又是no。
17:06
哎,自己怎么回事啊,哎,那么讲的这个第二个点,包括呢,我们刚才讲到的这个第五个知识点。啊,第五知识点就在在下边儿说到这个外层元素,内层元素的这个默认值的时候,其实呢,这些知识点跟我们这个内存结构啊,它都是一个整体的。只要呢,这个内存这块呢,大家能听得懂,你再翻回去看我们前面那五个知识点,诶,那基本上就能够连成一片就通了。那就可以了。好,那么关于二维的这个支点呢,我们就讲了,整体来说的话呢,是有一定的难度的哈,诶大家呢练一练,练的时候呢,注意还是先以一维为主。把一维呢,搞定以后呢,再来看这个二维的。好,那么下面的话呢,我们来看一看这个二维数组知识点,讲完以后呢,对应的课后的这呢,我们也提供了三道练习题来,首先来看第一道题,看一下这个题目的需求,说那获取AR数组中所有元素的和哎提示呢,用for循环来去实现啊,那如果呢,要是一个一位数组的话,其实就一层泡。
18:05
呃,二维数组就是两层的嵌套否,其实就可以搞定了,这些数组呢,长这样。啊,长这样啊好,那现在呢,我们要把这个数组中有元素的这个值呢给它和呢计算出来。来一个啊数组。啊,练习零一啊好,来看一下这个题怎么去实现啊呃,首先的话呢,涉及到我们得把这个数组呢先造出来,这就涉及到初始化问题了,那我们应该用静态初始化还是动态初始化呢?那这里边儿这个短横线呢,就表示就根本没有这个位置的元素啊,这样来理解,它要写成零的话呢,那就是有元素值是零了哈,行这呢,我们其实比较方便的话,应该用静态初始化对吧。一行代码就能搞定啊,来这个,因为每个位置的元素都是整数啊,所以我就用int型的二维数组来表示了,你有一个int型的二维数组。然后呢,在这里边,呃,首先呢,是第一大家第一行吧,诶358。
19:03
哎,就是这样来去写,然后逗号一下,那这个位置呢,是呃十二九是吧,哎,再逗号。7064,诶这一行就搞定了。那如果说我我不用,我不用那个静态初始化,我就用动态初始化,那这个就费劲多了啊。那你得怎么着了?简单的体会一下啊。先这么着。你一个因特形的数组,因为呢,它外层呢,这是有三了啊,里边这还没法写。因为它这个列的这个个数不一样是吧,所以这个位置没法写啊,然后接下来你在A2呢,呃,第一个是吧。这个时候呢,你说我这时候用静态初始化,那其实还好一点。啊,因为呢,紧跟着这里边儿,你就可以去写这个358了,是吧,如果你说这块我也不这样。那那那就真的有点费劲了,这里在这儿写个。在这写个三是吧,然后呢,再下边就A20。呃,然后呢,在第一个位置是三,然后一个一个去写,那这个特别辛苦是吧。
20:06
啊,这就真的是。这个动态初始化这样去做了啊,所以呢,结合具体的问题啊,我们得看一看到底哪种方式更适合一点,显然呢,这种方式呢不靠谱啊行,那这呢是它的一个初始化啊。诶,初始化这个数组,这呢,我们使用的叫静态初。是画啊,这个在下边写,不建议。啊,不建议使用动态来初始化,好,那么这个速度有了以后呢,下面我们要做的事呢,就是计算一下这些元素的和。实际上呢,就是便利一下。那然后呢,你拿一个变量记录一下它的这个和就行了,首先我们定义一个啊in特型的一个叫萨姆,哎,这个值呢是零,用它呢来记录。呃,元素的总和啊好,For循环,那因为呢是二维数组,所以呢就两层for循环了。哎,Y层呢叫a2.las,然后这呢,注意这个呢,我们是想用这个接了哈,实际上你就还是写成I就行啊,一回车自动的就是接。
21:05
啊,Ari里边的这个点。啊,这个呢,大家,呃,刚开始像这些都是基本功啊,哎,得多去写一写,写出了以后呢,呃,写到什么时候算是没啥问题呢,就是你涉及到说我要便利二位数组,那这个脑袋还没有反应过来呢,手都已经出去了。这就到位了。啊,就跟别人呢,呼了你一巴掌,这个呢,你脑子还还没反应过来呢,你自己的那一巴掌也上去了是吧。哎,条件反射那就到位了啊,那说明你这个已经代码跟你人已经融为一体了是吧。对啊。这个就得拿起来就能写才行,OK。好,然后呢,接下来我们需要做的事呢,就把每一个元素呢,给它取出来啊。啊,然后呢,这时候我们加到你现有的这个萨的基础之上。诶这就搞定了,呃,它呢不需要你输出啊,所以你直接呢,做一个累加就行,除了那个外层的放循环之后,诶,我们打印一下说呃,总和为。
22:00
加上一下我们这个sum就搞定了。诶,这呢就属于一个基本的便利啊,基于便利呢,衍生出来的一个求总和的问题,总和呢是54。哎,就搞定了。哎,稍微的体会一下啊。好,这道题呢,我们就告一段落,接着我们来看这个第二道题。哎,这道题的话呢,哎,看一看啊说声明了,哎,XY2个变量。说呢,在给XY变量赋值以后呢,允许通过编译的是。哎,这那就是看ABCDEF哪些能通过编译啊。嗯,其实这道题呢,我是感觉说不太难,但是呢,实际情况发现呢,很多同学做这道题的时候呢,很痛苦。或者呢,特别不理解。来那讲这道题之前啊,咱们先稍微的啊,诶,我给大家讲一点储备的这个知识,然后呢,你再回来看我们这道问题啊零二。啊,没有方法啊,首先呢,这里边儿它考察的其实就是这个符号啊,这呢叫赋值符号。咱们前面讲运算符的时候呢,提到过这个事儿啊,这个复制号符号的时候呢,当时我们讲它的时候呢,还到过这个事儿,什么事儿,就是说这个符号呢,要么呢,右边啊,咱们就先拿咱们比较熟悉的啊,这个呢,我写成十啊印那个接了这个右边这块呢,你要是个常量呢,就像上边一样,这个十呢,就满足这个类型的。
23:19
呃,要么的话呢,你不是个常量,是个变量也行,只不过这个变量的类型跟这个是一样的。哎,类型一样,可以用这个符号。哎,这呢是这算一种场景,这也算一种场景啊,诶还有什么场景呢,就是这样的啊。这个呢,叫。自动类型提升。没问题是吧,好,然后接着的话呢,我这写个BAT啊,这写个B,这写个I,这肯定不行。来个是吧。诶,这这块呢,我们叫,哎强制类型转化。对,转完以后的话呢,就是其实说白了,你这块还是个BAT类型啊,诶BAT类型这呢,相当于还是类型一样的,我们这块呢,可以往左边去付了。
24:00
哎,上面这块呢,你这个ii呢,跟它类型不一样不一样,不是说就不能啊,你呢是满足类型提升的也可以。啊,这呢,就是完全类型一样,哎,其实也就这么几种情况。那这个呢,要清楚以后呢,你看下边啊,我们举例数组啊。举例来数组。数组你看有这样的,首先你看我这是一个。哎,我这给你扭一下吧。这是个int型的数组,没问题哈,你说我现在我再去扭一个bad型的数组,我叫A2。这也是个十没问题是吧。那么问啊,你说我这个A。我这来个20吧,比如说。其实跟长度也没啥关系啊。A2。能啊。不能啊。报错了是吧。诶报错这块呢,我们就要分析啊,说为什么跟前面一样啊,就是你要把两边类型一样。
25:02
呃,其实这块呢,我们把它呢往上诶。把这个呢,我们其实可以往上提一下啊,这仨呢,其实都可以理解成叫类型一样的。右边呢跟左边类型一样,然后这个呢,是右边呢比左边的类型小是吧。那这样的啊,那你这时候你要分析啊,说行也好,不行也好,你得看一下,首先你俩类型一样吗?显然不一样是吧?好,那不一样就不能按这个事儿来看了,那就得看这个了,那右边这类型算是左边类型的一个。满足我们说的那个那个容量小到容量大之说嘛。哎,不不是啊,你只能说呢,这个数组里边这个元素。BAT啊,是它的相交int来讲是一个小类型的,但是你不能说这个数组是它的一个小类型,这完全是两个不同类型的引用类型的变量。对吧,所以这个是不可以的啊,原因呢,这个首先呢是编译不通过啊。啊,这个原因呢,呃,就是我们说的这个int型呢,它呃,以及呢,咱们bit类型呢,它是两种。
26:06
两种。不同类型的营营变量啊。诶,所以呢,他俩呢,是没有满足这种自动类型提升之说的。那这个你要得注意一下这个事儿啊,那可能有同学呢就会说了,诶说这个AR2里边放的是个地址,AR里边放的也是个地址,地址跟地址,那就直接移过去完了,他怎么还能校验一下了呢。哎,你看一下咱们在讲这个打印所谓的地址的时候哈。你看我们一下,对,它不光是记录了这个地址值了,它前面还有这个类型的哈。你这是一维数组是in型的,我这是一维数组,我是败的类型的,咱俩类型不一样哈。所以呢,是不能够相互复制的,它在复制的时候呢,还有一个类型的校验呢。那这个呢,要注意一下这个问题啊,这呢我们说的是这个,呃,一位数组啊,诶这个你要是还行的话呢,你看我接下来说这个事儿啊,我来一个因特形的二位数组。
27:07
这个呢,我就写个写个三吧,这个写个二。这这样了啊好,那你说我们这个AR21能复制给AR3吗。AR1能复制给A23吗?这就更过分了是吧?连维度都为数都不一样。这个也不行哈。哎,编译不通过。那其实这个呢,我要是写原因,其实也可以写,他们的类型是不一样的啊啊,那你这个要具体点,它俩为数都不一样,更不能去敷了。这是不行的。然后呢,你看我这样行不行啊。怎么着呢,我这个AR3它不是二维的吗。我这样。然后呢,我拿这AR1去付,你说这个行不。可以。哎,这个可以了,对啊,因为呢,你A23呢,它是二维的,然后我这样写,它不就是一维的int型数组吗。
28:04
然后你也是意味的int型数组啊,或者换句话说呢,你看我这块我要打印一下啊,A23,这我写个零,我在呢去复制一份,这我就写A21,这个你会发现呢,这两个打印出来的地址值前面的类型啊。是不是都一样了?哎,那这样呢,咱们俩就可以这样的去复值,这不就满足我们上面说的这种情况吗。就可以了是吧,诶所以说啊,咱们针对于数组这块呢,呃,可以稍微的做一个总结。总结是什么呢?其实呢,就是我们这个题目考察的点啊呃,要想数组能够往哎,数组之间能够相互呢,他们的这个为数首先一样。新的这个维数亚数呢,这个类型也得一样。啊,像这呢,为数不一样,像这个呢,为数一样了,类型不一样,都不行,都不能付,必须呢得是这个为数和类型都得一样,它才可以付,说的直白一点就是你得类型一样啊。类型里边其实就包含了这个尾数了,你像我们这个二维的,比如说你看我这块再打印一下啊。
29:04
我打印这AR3哈。诶,看了一个结果,这个AR3的话呢,它不是个二维的吗。所以呢,你看它打出来,它有两个这个中括号啊。啊,所以说这个咱们咱们呢,其实范围来讲,其实就是类型一样才行啊,类型里边其实也包含了这个所谓的尾数这样的概念。行这个呢,诶我就说完了,这个说完以后呢,大家回过来,诶再看这道问题,我觉得就好多了啊。好,这个问题呢,就问说我们能不能左右之间相互去赋值的,实际上你就在看这个符号两边呢,要么你满足自动类型提升,要么你俩类型就得一样了啊好,那么这个问题呢,首先你得需要知道X和Y分别是什么类型的。X是什么呀?哎,是一为int型数组是吧。那就这样写吧。然后Y呢?对,这个你一定要注意,这个Y呢,是二维的因的型的数组,它长这样啊。
30:02
因为呢,你看它这个是这样写的,这个X和后边这个呢,他俩共用了前面这个。所以呢,X呢,其实它诶是长这样的,Y呢,它相当于前面一个后边一个。换句话说呢,这个X是一味的,我们这样写都可以,Y呢是二位的,我们这样写也行,这样写也行,这样写也行,然后呢,恰好呢,我选择的是这里边挑的它,这里边的它。他俩的前面这个呢,这不都一样吗?我就共用了。X一个,Y中括号一个。哎,先明确这个事儿啊,这个明确完以后呢,再看我们这里边儿啊,这个首先你看第一个能通过编译吗。不能,这是二维的。这是一个特型的基本数据类型了,是吧,不行,这个呢。可以吧,哎,这边是一维的印的形。意味的in的形是吧,哎,可以啊,这个呢。这个不可以,这儿呢是意味着。
31:00
数组是吧,啊这个呢,是一个in型的变量嘛。嗯,好,然后这个呢。这个本身这就写错了是吧。它都不是二维的啊,本身写的就不对啊啊然后呢,这个呢。哎,这个是可以的,这是int型的变量。这是因对性的变量是吧,也可以啊,这个呢。不行,那这个是二维的,这是一维的是吧。不行,诶这样呢,再看是不是就更清晰一点了。啊行啊,然后呢,这个就回归到我们一开始的这个符号这块,那么以后我们讲面向对象的时候呢,其实也满足类似的特征啊,到时候呢,我们再去强调啊。好,这个题目呢,我们就告一段落,接下来看这道题啊。嗯,这道题呢,它其实是希望我们打印这样的一个效果。啊,在这里边儿呢,涉及到这个二维数组了,首先呢,它定义了一个二维数组啊。诶,定义了一个二维数组,这个二维数组里边呢,首先从外层来看呢,呃,其实每一行这块我们理解成其实就是一个员工了。
32:01
哎,只不过这时候呢,我们没有讲面向对象,诶以后讲完面向对象以后呢,咱们其实就可以改写成叫一位数组,这一个位置呢,就是一个对象。这也是个对象,这是个对象,但现在没有讲,那我们这呢,所谓的这一个对象呢,我们就运用几个哎元素来表示它这个对象的一些这个这个基本的属性了啊,比如这个十十呢,稍微抽象一点,下边它有说明。呃,十呢,这个叫普通的职员,11呢叫程序员,12呢设计师,13架构师。诶,所以这里边十一十二十三呢,它有特定含义啊,除了这个字段之外呢,剩下这些呢,这叫编号了。你看这也知道啊,呃,这个呢叫姓名。这个叫年龄啊,这个叫薪资,哎,薪资后边呢,有的员工呢,是有这个奖金的啊,有的呢还有股票。那这样的一些情况。啊,其实呢,每一行呢,其实就代表着具体的一个员工了哈,只不过这时候我们是用的具体的一个一维数组来表示的,啊希望呢,呃,展示出来这样的一个特征。
33:05
看似呢,似乎又很简单,但是似乎呢,又很难。哎,其实这里边,呃,你要说简单话,其实不就是把这个二维数组变历一下吗。但是呢,这个难就难在呢,它不是显示的是这个数是吧,它是不是显示的是这个信息啊。除了这个之外呢,剩下的是不是就都一致了?哎,所以这块呢,呃,也还算简单,拿就拿在我们把这个十呢,替换成相应的这个字符串就可以了。OK了,行,咱们来去实现一下。啊,AR。是吧?EX12032。哎,没有方法进来。好,那么首先的话呢,我们得把这个数组先给他拿过来,这个呢不用你定义了,直接抄过来就行。首先呢,去定义这个二维的啊,Employees的这个数组。啊,直接再拿过来就行了啊。好拿过来就行,拿过来以后的话呢,如果你要是啊这个位置呢,你就不给它改写成叫普通职员,我就你是啥我就写啥,那就还写成十啊架构之上还是13。
34:09
这这个事儿其实就比较简单了是吧。就是纯是一个简单的便利了,那不妨咱们就先这么着整一下啊。呃,注意的点呢,就是我们上面其实还有一行不在你这个数组里边的,先把它呢给打印出来。哎,我们就来一个输出语句了。哎,这么着啊。这个叫按员工类型杠T。改编号。哎,姓名。年龄。呃,薪资。奖金。诶股票好自动呢,它会有一个换行了,诶然后换行完以后的话呢,我们其实就是针对这个二维数组呢,做一个便利了操作了啊,诶放一下这个我们叫employees.length哎,这个大脑写的时候得清醒啊,还是for。Employees I。
35:00
点length是吧,哎,这样啊好,那么再在这里边儿呢,我们就分别的把每一个位置的这个元素取出来就可以了。啊,这个位置呢,换行可以是吧。The employees。这是一个I啊,然后呢,这是一个。接是吧。呃,这个呢,是我们打印的相应的这个位置,然后接下来是下一个这个位置,就呃,这个就不能换行了是吧。然后接着在这块呢,我们来一个。杠七吧。对吧。哎,比如说这个普通,呃,这个不是普通人写的是十,然后呢,这个呢,接着有一个指表符,然后来个一啊,再来个指表符段誉是吧?呃这样这样这样以此类推啊,诶当这一行搞定以后呢,接着就呃下边换一个行。这样是不是就行?大块没啥问题了,跑起来。诶,大体思路就这样了,呃,当然这块有这个没对齐的这个情况啊,这个咱们先别着急去排,因为呢这块呢,要把这个数给改掉嘛,呃改掉的时候呢,到时候再考虑这个事儿啊行,那大体的思路呢,基本上就算成了,关键呢,就是现在把这个第一列的这个数呢,我们给它换成对应的租套啊就可以了啊。
36:13
嗯,看看接着怎么弄呢。对这块的话呢,我们就不让他去考虑从第一个位置来整了,是吧,我们把这个这个改写成一,那就从第二个字段开始哈,第一个字段呢,咱们专门给他拿出来对吧。Employees这个I,那我们把第零个元素取出来。它呢是一个字串,你看是吧。那我就还拿四五串接收呗。这个我们叫employee的一个type。可以吧?啊,它的类型这是个字符串,然后呢,你要是十啊,就叫普通职员啊11怎么着,这个接下来怎么办。就分支了呗。哎,分支呢,一看是字符串,情况也不多,哎,思维就上了。Employee cap。哎,就开了啊,注意双引号是。
37:02
冒号这个呢,咱就直接打印了。叫普通。员工这个呢,咱们得在这儿得整一下子啊。在这儿。诶,CTRLC回过来。哎,咱们在这儿呢,方便呢,我们去。哎,查看啊,是的话呢,叫普通员工,哎,普通职员。不能这样啊,这呢,来一个break呗。好K一下11啊,来冒号一下。嗯,这个呢,叫。成员。H2。嗯,这个叫设计师。哎,这样啊,好看一下13。这个呢叫架构师,诶大家你看啊,我现在光标是不是在这儿呢。哎,光盘在这的话呢,我要是直接点回车就成这样了。
38:02
哎,我怎么能够让他顺利的到下一行,按住shift键一回车。SHIFT1回车。这就省着你点鼠标了。那提案呢,会好一点啊。呃,13说白了就是我们用快捷键的目的呢,就是说减少你用鼠标的这个频率了啊。嗯,这块的话呢,我们删除的话呢,叫CTRLY。啊,这个他也会有冲突的哈,我就要的实在是delete的啊。嗯,在CTRLY,诶每次呢,都让它充当是删除的功能啊。好,Break一下。好稍微的搂一眼啊,这个如果你要是十的话呢,就是它十一十二十三,这个注意呢,不要要换行了。然后呢,它跟后边这个字段呢,有一个制表符的一个距离,所以把它呢加上。哎,保存一下。哎,其实这个保存CTRLS不用写啊,就是我养成习惯了老是CTRLS了,这个其实它自动的就保存了啊。
39:05
哎,然后后边这块呢,就差不多了是吧。转一下。哎,这不这个效果就出来了,看看对齐情况啊。这个差点儿。嗯,这就我们在姓名的后面啊。这诶这应该在这加一个也差不多,这个好像得补一个。我们再看一下。那这个补多了啊,这个不用。然后呢,后边应应该就可以了是吧。奖金啊,薪资的后边。其实这块的话呢,大家补也行,不补呢,我觉得问题也不大,你说这不补多难看呀,呃,那倒是当然,实际我们在开发当中啊,咱们也不会在这个控制台这块呢,去给他整的是吧。诶这没问题了啊,诶咱们真正开发的时候呢,其实你面对的应该是跟用户交互的界面啊,我们可能是浏览器,也可能是具体的客户端,诶浏览器的话呢,我们就需要呢,调你这个HM代码csi的这个结构了,诶去调那些代码这呢,咱们其实就是基本上能看到效果就行,这个杠器这种其实不靠谱哈。
40:13
啊,只是我们这块呢,在控制台上稍微的演示看一下效果就行啊,真正在跟用户交互的时候呢,我们去调这个具体的代码了。好,那么这道问题呢,咱们就搞定了,这呢是关于二维数组,哎,课后的有三道问题,那整个二维数组呢,咱们就诶告一段落。好,那么一维数组二维数组,当然咱们这一章里边的呃,两个重头戏了哈,在这两个里边呢,重点还是一位数组,因为本身也没有所谓的二维数组。哎,一维里边又套了一个一维,这叫二维的,所以呢,基本的点还得把一维先弄懂OK啊。
我来说两句