00:00
好,那么下边的话呢,咱们就来看一看啊,异位数组的啊,使用上的这样的几个点啊,首先第一个就要数组的声明和初始化了,哎,这个说的话呢,咱们首先呢,哎,还是做一个相当于复习了哈,复习什么呢?我们看看定义变量的时候,它的一个格式。哎,变量啊。它的一个定义格式啊,这个格式话呢,我们提到说叫数据类型变量名赋值为,哎,变量一个值啊,哎这个比如我们定一个啊int型的一个叫NUMBER1,这个呢复制为十,当然你也可以呢这样写,还说先整个number,然后NUMBER2呢复制为一个20。呃,就这呢,我们写在一起了,这个呢,分开写的啊,你要讲究讲究一点的话呢,这个我们称为呢叫声明,这个呢。诶成为呢,对赋值,第一次赋值呢,叫初始化是吧。对啊,就是把这俩合一起,那就是它,那现在呢,咱们定义的是数组,数组也是变量啊。哎,那他就也满足这样的一个格式哈。好,那下边咱们就看怎么定义,那咱们就基于这样的两个数组吧,先看比如前面这个啊这呢我们去呃声明数组。
01:08
来声明数组好,那这个数组的元素一看是double类型的是吧?这个我就用首先double指明你数组元素的类型,那你这不能是个变量,你是个数组啊。哎,这块我们用了一个中括号来表示。诶,你看跟我们一开始讲这个may方法的这个是一样的是吧?诶所以may方法这块呢,其实就是死顿型的一个数组啊这呢我们是double类型的数组,好来起个名吧。Price是吧,这个呢,我就分开写吧,这叫声明,那下边呢叫做初始化。哎,我就是不是开给大家去赋值了,诶这个赋值的话呢,其实呢,呃,大家也见过,就我们讲new scanner的时候啊,这呢也是用个new。你看new后边它给我提示了啊,就是这样的一个结构是吧,然后呢,呃,New的是什么呢?前面你声明了什么,我们就new什么。声明的是double型的一个数组,那我就拗一个double型的数组,但是你这样一写的话呢,它会报错。
02:02
哎,那就说明这个格式呢,还不对啊,那在这个中括号的后面这个位置啊,咱们整一段大括号,这里边儿指明你相应的这个元素。不同的元素之间用逗号隔开。哎,43.22行,我就写三个吧。看一下啊,这呢是声明,注意这呢一定有个中号啊,然后呢,这呢是给它赋值,数组呢是引用类型。后边大家呢,会知道营类型呢,基本上我们都是用new的方式来创建的啊,所以呢,我们去new一个声明什么就new什么。所以一定这个中括号不要丢了,然后呢,哎,既然你这个数组里边有元素,元素是谁呀?大括号里边指明多个元素,逗号隔开搞定。在这呢,就是我们这个叫声明的话呢,下边就叫做呃,初初始化啊。啊,这个你可以称为呢,叫1.1是吧,那这个呢,就是1.2。那就他了。
03:01
行体会一下啊好,这个呢,是我们说生命的这样的速度,那这不还有一个吗?我们再来一个啊,再来一个的话呢,我写的话,我就跟上边这个不一样了,我再写另外的一种。方式。好来看,首先这边呢是string类型的是吧,所以呢,我们应该是string类型的一个数组吧。这样啊,好,这个呢,我们起个名字叫父子。那这块呢,当然你也可以给它封起来哈,那那接着呢,你就复字等于呃,如果呢,按上边这个套路的话呢,其实是这样写的哈。在这个位置是不是整个大括号,然后在这边你写上这个,比如叫半海哲是吧。在逗号一下逗号,哎,不对,在这逗号是吧。然后这呢叫龙。去菜是吧,然后再出来啊逗号一下,这你再写。强冬笋。再来一个吧。玉兰片是吧,有的都没吃过是吧。
04:03
好这呢1234啊,咱就写这四个吧,诶我就不写后边了啊行这个呢,如果整体来看的话,其实跟这个套路是一样的是吧。对,那这呢,呃,是一种方式了,这个我就现在想给大家写成另外的一种方式啊,注意我把这个呢,就给它注释掉了啊,哎,我不这样写,我换一种,但是你看啊,我还是死钝形的,我叫父子。哎,然后怎么着呢,哎,我这个副字,哎右边呢,我是new一个string,诶这样呢,首先不对。啊,不对啊,要么呢,你把这个元素写出来,就是这种方式,要么呢,我在这个中括号里边可以把它的长度写下来。1234,我就写个四,你看不报错了。就看这边有没有红的啊,你看我要补写。哎,不写这个四哟。这样是吧,哎,布列列四呢,你看这块报错,说你这个数组呢,初始化这块有个异常是吧,哎这个你把这个四呢一加,哎这块你看就不报错了,说明呢这呢也是一种合法的方式。
05:00
诶这呢,我就用了两种方式来表示,当然呢,这个呢,你你把它是不是收到这换成一行是不是也行。哎,那我就放这一行吧。啊,这个啊这个呢,我们也是一个数组的生命数字化,其实呢,就合在一起了啊。来声明和初始化。OK啊行,这是一种,这是一种,那么这两种的话呢,就是咱们在呃,初始化这个数组元素的时候,初始化这个数组变量的时候呢,它的两种方式啊,一种就是长这样。一种呢长这样,大家你看你怎么区分一下。这两种,或者你怎么去记一下这两种啊。嗯,对,一种相当于是它是不是有具体的这个数组的元素了,是吧?哎,另外一个呢。没有元素光指明说你这个数组的这个容器的容量是吧?啊或者叫个数或者叫长度也好啊四那你说这个长度确定了吗。确定了,就是你有几个元素,不就是长度几嘛,是吧?诶没问题哈,诶所以这块的话呢,哎,就是像大家刚才说的这样一个场景,咱们给大家起个名。
06:06
把这种方式呢,我们称为,它叫静态初始化。哎,那么有静,那就有动呗。那它呢,就动态初始化,哎怎么去区分呢,你看我这样说啊,说呢这是数组这个变量。这也是数组这个变量,这个数组变量的赋值。啊,和我们这个数组元素的赋值呢,同时进行。啊,那这时候呢,我们把它称为叫静态初始化,而这个呢,你光把这个数组变量赋值了。右边这不是负值的吗。但是呢,你这个数组元素没有赋值。哎,我们可以理解成叫分开进行,这个呢就称为动态初始化,好写一下啊。数组变量的赋值。哎,或者叫初始化也行啊。哎,它呢与呃数组元素的这个呃数值操作。
07:01
啊,同时进行。啊,这个咱们把它上后边叫赋值,这个也也改成叫赋值吧。它呢是同时进行的啊,那如果呢,你是分开进行的。哎,那这时候呢,我们就称为呢,它是一个动态的方式。好了,哎,这个就说清楚了,那么通过这个呢,诶,我们还想说这个相应的数组的几个特点哈,诶首先比较直观的能够看到,哎,发现呢,不管你是静态初始化还是动态始化,我说呀,一旦初始化完成,数组的长度就确定了。这个是不是三。这个是不是就四。哎,这呢也是它的一个特点。啊,这呢,我们对应到这儿。嗯,数字的特点是吧,在这写啊。诶,这个我们说数组啊,一旦初始化完成。哎,其长度就确定了。那就确定了,好,这呢是它这个点啊,其实后边我们还会讲一个点,它不光确定了,而且这个长度还不可更改。
08:03
对,还不能改啊,诶咱们稍后一点去说吧。嗯,先把它写上吧,就确定了啊,并且是吧。哎,其长度不可更改。什么叫不可更改啊?不能变是吧。呃,那你比如说我们现在这个有四个菜,那我现在就是后边我又加了俩菜,那咋整。对,那不好意思了,呃,你这呢,呃是一个数组里边呢,能放四个元素,你现在这四个放满了,你说我这不够了,我想再加俩,加俩的话呢,这个你注意你再重新去造一个数组。哎,这呢是你这四个,你再拷贝过来,哎,后边你加了俩,那你再加俩。哎,那么有同学说了,说诶你这四个,你这后边你直接整俩不完事儿了吗。为什么不行呢?长度不可变。不是,那到底你要说长度不可变,那不行,那到底是谁解释谁呢?
09:01
是吧,是因为不能往这放了,所以我们说长度不可变,你现在说长度不可变,所以不能往这放,互相解释了成了是吧。对。为啥不能往这儿放呢?是因为我们这个数组这个整个结构呢,是放在内存里的是吧,诶它呢,你一开始你需要四个嘛,那我就找一块空间能放你这四个。就是他就找这个空间呢,能放下那我就放这儿了,那很有可能这个后边已经放别的变量了是吧。所以你这块呢,你过来以后,呃,你要放这儿了,你后边我说后边还想放,你后边已经被别的数据给占用了,你就放不了了。实际上这里边儿还隐含了一个支点,就是我们放的时候呢,这四个数组元素,它在内存中啊。是完整的一块空间。对吧,你不能说,哎,这四个放这儿那不行,那俩我就再找俩地儿,那不行啊,哎,那么数组的元素在内存中啊,它必须是一整块儿的空间。就是我们这里边写的。诶,创建数组对象,会在内存中开辟一整块儿的这个空间,那到底开辟多大呢?哎,那得看你这个数组的长度是吧,长度越长肯定越大,另外的话呢,我要是int的数组四个跟bad型的数组四个,是不是整个空间也不也不一样。
10:11
因为呢,这个元素的类型不太一样是吧,哎,所以这个呢,大家应该也能去理解这个事儿啊。好,这呢,我们把它呢拿过来。提到这个问题。为什么不调用一大块内存,什么意思?啊,你一说你是说呢,我一开始给大家分配的空间特别大是吗。嗯。你想给他空间大一点是吧?啊没问题,就是这个想法呢,其实是挺好的啊,后边我们讲容器,讲这个集合的时候呢,也会有这样的想法,比如说呃,我也不知道你开始到底要存几个,我先给你一个长度是吧,我给你比如说十,我给你16,你往里放,假设的话呢,你没超过十,没超过16。或者呢,你呃,这个动态的,一会儿加几个,一会儿减几个,诶总之呢,没有超过十,没超过十个,那就还用它。
11:01
但是呢,你再给大总有可能是不是不够。这是一个点啊,第二第二点就是说你给的多大算大呢。是吧,你给了他大了吧,你要是假设啊,你给他叫100,你说超不过,但是你每次都用十个,超不过十个,那你90个就会浪费。那我们就尽量不要浪费嘛,是吧。诶,所以呢,在实际开发当中呢,就是会有啊,他刚才的想法挺好,我们会给你一个长度,可以这就后边集合我们再去讲啊,我给你个长度你先用着,但是你说呢,呃,你要够用那挺好,要不够用呢,不够用还得去扩容。没有办法是吧,或者再换句话说呢,咱们讲的这叫数组,数组的特点呢,就是在内存中,它就是连续的啊,没办法,就是连续的,你如果说嗯不好不好,那就不好了,它就是弊端就是这个,那你可以用链表啊。对吧,不是还有别的数据结构吗。啊,你这个盛不下,盛不下,那你再找一个别的空间,这个别动,那你通过指针的方式指向你下一个位置。就像咱们商务的这个校区一样,如果呢,说了必须每个教室都得挨着,方便我们管理,那假设呢,咱们这块呢,开了比如说五个教室。
12:06
啊,后来发展业务呢,比较好是吧,所以我们要扩撒教室,一看人家旁边这个机构都已经占了,我们必须要挨着,那怎么办?那你重新再对,重新再搬一个家得了是吧,找一个地儿呢,你看能能容下你这么多教师的,一个一个挨着的。那只能是这样。把人家赶走啊。啊,那你得看它是垃圾型哈,你给他清理掉清理那那不行是吧,你得给一个统一的方式啊,你这个能清理,下个可能不能清理了是吧,统一的方式就是你得重新再找个地儿啊,哎,你要说我能接受什么呀,说我我就放这儿了,你说这块呢,可能空间没有,我要扩教室。那我这块还不想退。那你就是再去找一个地儿,你整俩教室,然后呢,只能说有个指针的方式指过来是吧,哎,那你这块呢,还用着这块呢,还用这块的啊,这个是我们以后要讲的这个集合框架里边的。的结构,说白了这就是数据结构嘛,是吧。啊,在集合这时候呢,我们去讲这个数据结构啊。
13:00
好,那这呢就先理解这个事儿了,然后这块还有一个哈,嗯,是这个的,哎,刚才呢,其实也提到了这样一个点。我把它呢就写,诶给我写到上面了是吧?哎,数组中的元素呢,在内存中是依次紧密排列的,就得一个挨一个啊是有趣的。啊,这样一个点,好这呢,我们就把这个事儿呢,就说清楚了,好再拉回来啊,那么关于这个数组的一个,呃,声明数字化两种方式需要大家呢,记住啊,那么实际在写的时候呢,你可以写上边我们标准的两种方式。啊,初始化呃,数组的初始化,这个我看能不能理解啊,这是初始化的方式一,这是初化方式二啊,这个稍微看一下,然后呢,我再写一写啊叫其他。哎,正确的方式啊。哎,其他这个方式,这我就直接呢定一个in特型的数字了,比如这写个AR啊,用一个in特型的,我这呢写了一个四,这跟咱们这个是一样的了,是吧。对啊,稍微的能变一变的就是这个中号的位置。
14:00
那这个中号呢,我们可以放到这儿啊。呃,这个呢是可以变化的,呃,这是一个点啊呃另外一点的话呢,比如我再去写啊,呃,In特型的这个习惯性的,我们还是放前边啊。然后呢,这叫A1了,嗯,然后后边呢,我们去一个int型的一个数组,嗯,然后我在这个位置呢,我写上一个1234。啊,这个呢,显然是动态的,这是不是静态的。没问题啊好,那么这个静态的话呢,如果我们把他的声明和出话呢,写到一行上去了,刚才我也提到了啊,说你前面这是什么类型,后边new的就new什么类型,那既然如此,前面是什么,后边就是什么,干脆我呢就把这个给删掉了。哎,删掉以后呢,发现也对啊,所以这呢也是一种方式哈,但是这种其实你注意它是一个省略啊,别看它是一种新的方式,这就是省略,这种省略的话呢,我们有一个学术的词儿,叫做类型推断。对,就是变异性的推断出来说你这呢是特的度,你这边呢,就是了一个in特的。诶,大家注意啊,这个行这个不行啊。
15:02
你看这是不是就是我们刚才说的这个方式,那我这能不能删呢。你发现不行啊。因为呢,你写成两行了。写两行的话呢,你这是一个price大部型的这块呢,编译器就识别不出来了,你必须得给它放到一行上去,它才能够识别啊。啊,注意一下,就是这呢,其实还是静,呃静态的这个还是动态的啊,这个就完事了啊,哎,你别写错了啊。哎,错误的这个方式啊,这个我们就这样一看就行,你别自己下来了,没事老是练错的是吧。哎,错的咋弄呢,哎说呢,我这里边儿有几个元素啊,123啊,一看有仨元素行,那这呢我记一下啊仨。这就错了啊。哎,这个呢,就画蛇添足了。哎,动态的呢是在这写个数,静态呢是把数写到后边,你别呢动态和静态结合起来了。动静结合是吧。啊,这个注意是错的啊呃,画蛇添足了。或者换句话说呢,除了这个对的,那就都是错的了,嗯,再来一个,哎,我这个AR3A in的一个in的一个数组,刚才这个三呢,你要写这,这是对的,你说我不写这,我就想写前面。
16:10
这也不行。呃,前面呢管人说类型,类型这块呢,是不要说长度的,你去右边你去说长度啊,说我这一个硬特型的数度长度几个看右边。不要写前边这呢也是错的,包括你说我在这写个三,这里也写个三,那肯定不行了啊行,那除了正确的就都是错的了,这个大家注意一下就行好,那么关于这个初始化呢,咱们就说完了,那初始化完了以后呢,我们接着看第二个点啊,第二点呢,我们就要数组元素这个调用了,所以呢,我们现在有能力呢,把这个元素呢放到这个容器当中了,那下一个问题呢,你得有能力呢把它取出来。啊,取出来那就获取它的一个值啊,你要光能往里放,不能往外取。那成那个黑洞了是吧。啊,或者呢,就像生活当中,你把啊你的工资给你媳妇儿了是吧。然后呢,能往里放往外取的话呢,这个得商量是吧。啊,这就不好办了啊行,那容器呢,不行啊,这个你要是这个容器呢,往里放,不能往外取,那我们要它的意义呢,好像就不大了啊,诶所以这块呢,我们得有能力去取它啊,怎么取,这就是数组元素的一个调用了,这个呢,我们就哎通过哎角标的方式。
17:15
哎,方式呢,我们来哎获取这个数组的这个元素了。好角标的方式怎么去写啊,举个例子啊,比如咱们上面呢,是这个价格,这个叫price,我现在想取这个数组当中的第一个元素啊,就是20.32啊,我们刚才那会提到角标或者叫编号是吧?哎,怎么弄呢?哎,这里边就到一个注意点,这个第一个元素呢,它的角标是。零。对,你要有仨元素呢,最后一个是。二对,这个大家你得刻意的去记一下啊,跟我们平时这个常识呢,可能不太一样了,呃,说一下啊,说这个角标的一个范围。啊,这个范围的话呢,我们说呢是呃,这个从零开始。诶到诶数组的这个长度啊,减一结束哈。
18:04
好,那这时候我们看一下啊,那这个price,然后呢,我们就用一个中括号啊,这个中号里边呢,你写上零。这呢就是咱们的第一个元素了。啊,那最后一个元素,那你就可以给price这个我们写上012,咱们不是一共就仨元素吗。哎,这就最后一元素,所以这呢,我们就把20.32和43.22呢就打出来了,诶走一下。哎,直接来看就出来了,这是第一个元素,这是第三个元素,好,那你说呢,我能不能再接着往后再整一个哈,Price这个我写个三。实际没有元素是吧。哎,那这是我们要打印的话呢,它会报一个异常,这个呢叫数组角标越界的异常。诶,这个呢,就是咱们这一章最后的时候呢,给大家做一个小结的时候呢,要说的这个点啊,这个呢就是报呃异常了,这个呢虽然很长,但是我们也能看得懂,其实啊,数组的角标角标index索引越界了。
19:01
因为边界呢,是长度减一嘛。哎,那我这嘎写四月界不?越减啊也越啊,那我写复试呢。注意也越界啊,只要呢,你不在我们这个范围内呢,都叫越界啊。好,那这块呢,要想这个程序能继续,你得把它注释掉。啊,这个呢,稍微的注意一下啊,行,那么稍微的说一下啊,大家说你说为什么他要从零开始呢。嗯。分配地址的。零啊嗯,对,呃,有道理啊呃,这个呢,其实就涉及到这个生活当中,我们一般的数数都是从一开始的是吧?呃,这块有一个小段子啊,就说这个一个成员啊,张阿成员,然后呢,有了孩子了,孩子呢平时都是孩子他妈带是吧?然后有一次呢,这个吃饭呢,这个点了好几个菜啊,顺带问了一句说那诶说这个数叶数是吧,你看桌上有几道菜呢,孩子就1234这样数啊,然后呢,这他爸呢。职业习惯啪一巴掌上去说,应该是零啊,1234是吧。
20:05
哎,得从零开始啊。OK,所以呢,跟我们的生活习惯呢不太一样,那这个零为什么是从它开始呢?其实这块呢,就涉及到我们内存中的一个事儿了啊,在内存中呢,咱们会把整个这个结构呢,放到一个呃叫堆空间的一个结构当中,然后呢,我们会用这个变量呢,记录它的一个地址,这个零呢,指的是这个偏移量哈。就是你第一个元素,相较于你这个一开始的这个地址偏移量是多少呢。他不就是。对,一开始这个位置的地址不就是你这个第一个元素的地址嘛,是吧,所以这个偏移的这个量呢是零,所以呢,我们就用这个零呢来表示的第一个元素,所以呢,它刻画的叫偏移量啊。诶,这个稍微大家注意一下这个事儿。那这块呢,我们就能够调它了,那对于咱们这个磁锥形的负子这个数组这个元素呢,没赋值,咱不说负值分开进行吗?哎,那你这块你得赋值啊,所以我们就可以通过诶负子呃角不零的方式呢,咱们可以去给它赋一个值,比如说负这个叫半海折。
21:02
哎,那么既然呢,你这个数组是个string类型的数组元素就是string,那右边呢,我就直接呢,写个字符串不就可以了吗。哎,然后那个副字。哎,这呢,我们这个一,那就是第二个元素,第二元素呢,比如说用它来复制。在依次类推啊,这呢我把几个都复一下CTRLD,这叫复制啊,第二个第三个角标。哎,CTRLC一下这个我们把它呢再覆盖一下啊。CTRLC。哎,V好,这样就可以了。好,那要再往下付,是不是又出事儿了?哎,这写个四啊,这个我们再整一个。选一个,比如说酱茄子啊。价。茄子啊好,那这块呢,保存我要你看这时候它编译哈,这个编译呢,会有报错呢,大家你就看这边。这边没有红的,这就编译是通过的啊,那编译呢,相当于这个事儿呢,是没有问题的,因为语法上来讲,你这写的是个数可以啊。
22:01
诶,但是真正我在内存中给你去赋值的时候,发现根本就没有这个位置。啊,所以我们右键直接呢去run。好在这个第50行啊,这不又出事儿了,说你是auto。诶这块呢,注意一下这个点啊,所以呢,我们把它得注掉错误信息跟他一样。啊,是这样的场景,好了,那么这关于第二个知识点,说数组元素的个调用啊,咱们就说清楚了,就是通过角标一定记住它的范围。好,第二完以后呢,我们看第三个哈,叫数组的长度。哎,这个长度的话呢,哎,其实就是你数字里边有几个元素。或者说呢,叫最多有几个元素了。什么意思啊,你比如说我要是把这两个注释掉呢。哎,如果问数的长度是几,大家说是二呢,还是说是四呢?对,应该说是四哈,就说你最多能放四个,只不过你暂时放了俩是吧。哎,这个注意一下啊,所以这个数字长度呢,就是来刻画数字当中这个容器啊,它的容量的大小啊,这个我在这写一下。
23:02
呃,用来。哎,用来这个描述。哎,书足。啊,这个容器中这个容量的一个大小。啊OK啊,那这个长度的话呢,我们说呃,使用。哎,可以使用一个属性啊。这个呢叫lengths属性来表示,哎什么意思啊,你比如说上面我们这个副字吧,那我就直接呢叫哎副词点lengths。哎,这就可以了,那它的长度呢,显然呢就是四是吧,然后price这个速度点length,哎,这个我们打印一下,它呢,显然长度就是三。哎,OK啊,来,我们去run一下。哎,你看一个四一个三,那就完事了。比较简单啊,这呢叫数组的长度。过了啊,这就过了好,那么这个完了以后呢,下边看一个点啊,叫如何遍历数组。说白了就是我想把数字这个元素呢,一个一个的都取出来是吧,这叫便利了,你比如说针对我们这个负子说这简单啊,这不就是呃负。
24:07
呃,负字角标零,然后呢,我们,哎,你看这呢,也是算一个,其实这就是个模板了哈,我把这个元素写完以后呢,直接s out一下。哎,这不就出来了,一共这四个嘛,CTRLD。第一个第二个第三个第四个,诶这呢就叫便利了。四哥。长度是四。但你这样写的话呢,是不是有点low啊?对啊,或者我要有40个元素,那你这你写40遍那不行是吧,所以我们都不这样去写怎么办啊。诶写循环了,诶因为呢,你发现呢,这个语句呢,它不断的执行,唯一变化的就是它的角标,那我们就用一个变量表示它的角标,让它不断的去加加不就完了吗?哎,恰好呢,跟我们这个for的特点呢,比较像了。哎,我就印一个I呢,等于零,哎注意你看是不是得写零了。因为角标从零开始啊I呢。对。呃,你要循环几次,取决于它的长度是几是吧?哎,在我们这里边儿呢,是不是得写小于四啊。
25:07
哎,然后呢,这时候A加加,然后我们再打印一下这个,哎,附字I是不是就行。捋一下啊,零这是一个加,加变成一,一是一个二,一个三,一个三小于四,进去四的时候呢,四小于四不满足了。所以三大头。哎,这样写是不是可以是吧,好,这样呢,写完以后我们做一个run啊。哎,你看这时候呢,就出来了。1234啊,一定要小心呢,这个位置等号不要写啊。一写的话呢,相当于你是不是把附子角标四的给打印了。这时候又会出。哎,是不是六十五行叫a desk Bo exception啊说呢,本身你看这个啊,长度是四,然后你还写个角标四角标不应该是四减一吗?最大的是吧?哎,所以不行啊好,这呢,注意一个点,另外一个的话呢,这个四呢,我们知道是数字的长度了,这个你给写死了。呃,建议呢,你这时候就别写四档。
26:00
对,不是刚讲了说这个长度是这样表示吗。哎,所以我们就用它来写啊,来再去做个run。哎,真的没问题。好,那么以后呢,我们编这个数组化呢,就直接写这个方循环就可以了。哎,那这个for循环呢,每次啊都是这样啊,For括号一个I等等着,哎,我们编了一个price的话,也同样的去写,哎这呢其实也有一个模板啊,我叫for I。一回车。小于price.less1回车啊,Price I。点s out1回车。效率还是很高的啊。哎,适应适应是吧,嗯,一旦呢,你适应了以后呢,你就回不去了。诶这呢,就我们把这个price呢做了一个诶循环啊,刚开始写的话呢,建议你先自己挑一挑啊,习惯了以后你再来一个诶一下是吧,这呢都是模板。就是咱们这个讲第四章的时候呢,最后一呃,这个上篇的最后一个节,第七节啊,就是模板的这个内容,那咱们就一点点的给大家去引入就可以了。
27:02
好,那么关于这个便利的事儿呢,我们就说清楚了。哎,那么刚才呢,我们提到关于一位数独的使用呢,我们一共讲六个点,那么前四个点呢,我们就讲了,哎,前四个点到这儿啊,那前四个点的话呢,其实主要在这个代码层面,这块我们就能够去定义数组啊,往里边放数据,然后呢取数据还可呢去便利,其实这块呢,我们就可以做很多的操作了,然后接着话呢,我们再来讲两个操作,第个呢叫数组元素的默认初始化值,这个呢,相当于我们再讲一下它内存的一些具体的情况了,包括呢下边异V数组的内存解析,那我们前面提到了说数组呢,在内存当中是一整块连续的空间。然后呢,我们这个,呃指向啊,这个通过变量啊,指向这样一个空间,这个空间呢,我们说呢,它的长度呢,呃,一旦初始化完成,长度确定了,长度还不能改,那整个呢,在内存当中,它到底长什么样呢?这个就我们要谈的第六个点啊,它的内存结构好,那下边的话呢,我们就来看一看这个五和六这样的两个支点。
28:01
哎,这呢,我就新建了一个Java文件啊,哎,这边呢,就是这四个,然后我们接着来看这个五和六,哎这第五个呢,叫数组元素的默认初始化值。默认初始化值呢,就是我们在没有给它显示负值的情况下,它的默认的一个值,哎,是元素的默认值。好,那这个事呢,其实想解决的是这样的问题哈,我呢先随意的写一个,比如说呢,我这就定一个in字形的数组叫AR1吧,右边我去逆入一个in字形的数组,这个位置呢,我写成是一个三了。然后呢,诶,我没有给数组的元素去显示的负值,那么问题是我现在呢,打印一下这A210,问他这时候的元素的值是多少是吧。哎,这呢,就是咱们要说的这个默认初始化值的问题了。好,那么要这样讲的话呢,咱们讲过啊,说这个数组咱们现在讲的都是一味的了,那数组类元素呢,它可以是基本数据类型,也可以是引用数据类型,基本数据类型呢,又分成整型、浮典型等等等,那这块就涉及到了,是不是有可能不同的类型默认值不一样呢?
29:06
哎,确实如此,哎,所以这块呢,我们就啊在这个笔记这块呢,去做这个区分啊,所以呢,我们考虑这个数组元素的默认出发值的时候呢,咱们就得考虑到不同的类型啊,就是我们下边要分的。具体要分的话呢,就分成了,哎,那你说哎,Bad形上形,哎其实会发现呢,它们都一样了啊,所以呢,我们这块呢,就说呃叫什么呀,叫整形。哎,整形数组元素的默认,哎,初始化值是多少?哎,然后整形完了以后呢,诶,浮点型的。哎,这个叫哎浮点型。那它的这个数字元素的默认出发值是多少,然后紧跟着呢,再来一个叫字符型是吧。哎,字符型数字元素的默认出法值是多少?哎,以此类推,还有波尔型。哎,波尔我就写成英文了,哎波尔类型好,那这呢,我们把这个基本数据类型呢,就说完了,那基本数完了以后呢,它还有可能是已数据类型啊。
30:07
哎,那这块呢,好好在一点呢,就是引用数据类型虽然很多,但是他们的默认出始化值呢,都是一样的哈,诶,所以这块我就泛泛的就可以写叫引用数据类型啊。哎,引用,哎,数据类型,哎元素的默认输法值是多少?好,这个呢,我们就来看一看,这个呢,看的话呢,一方面你可以直接找呃官方的说明,另外呢,我们直接可以测试的啊,所以咱们这呢,就通过这个测试呢,去做一个演示,好那既然提到我们去做这个测试呢,这里边呢,注意啊,我这呢使用的叫动态初始化了,你说我能比如我现在运行其就出来了啊,你说我能这样测吗。我这儿换成个静态的。不行是吧,因为呢,你显示给赋值了。他就把那个默认值呢给覆盖了,你就看不出来了。呃,但是并不意味着我们这个默认,呃,这个静态出化方式没有默认复制啊,是有的,只不过呢,你看不出来了,所以你现在一打印呢,就成一了是吧。
31:04
所以呢,我们不能够使用这种静态的方式,你把它呢得干掉,咱们只能是用这种动态的方式,我写一个,比如说三这个你运行是不是就出来结果了。哎,你会发现呢,这个结果是。哎,这个呢,是我们以int为例啊来说的,那除了T之外呢,咱们先说这个整形吧。那这不刚才我们就说了这样的几种情况啊,CTRLC一下咱们拿过来。嗯,先啊,还是先粘一下。这样一下是吧,然后呢,C al l。啊,不好使是吧,我已经给厨师了,他也不给我这个变了啊,我自己调吧。嗯,这个我也动一下啊。嗯,行,那刚才呢,这块我们是以in的为例,说的这个整形,那其他的整形跟他一样嘛,这个你可以稍微的再感受一下啊,比如我们就随意写一个,比如说写个short吧。
32:03
啊,AR啊,你一个。呃,上的类型那个速度这个呢是四,哎,那上面这块呢,我只打印的第一个元素了,是零,那有同学可能想这是不是有可能后边就是123了呢。啊,那那不排除你有这样的这个想法啊,合理性是吧,那我们就把这个每一个元素呢,都变了一下得了。哎,打印一下这个AR2,哎,它的每一个元素。哎,就这样来去实现好,一共呢是有四个来运行。哎,这呢,你就发现了四个呢,全是零。好,那这样的话呢,我就不去再去列这个bad型和long类型了啊,它们都是一样的啊,最终结果呢,就是整形元素默认初始化值零。好,那这二零的话呢,我们接着来看这个浮点型,浮点型呢,Float跟double呢也是一样的,这个大家猜一下。对,合理的话呢,你也应该猜,也得猜个0.0是吧。好,那我们就以double为例吧。A23。大波形的一个数组长度呢,这个你就随便写个长度就行啊,哎,我就没有必要呢,每一个都打印出来了,咱们也看到了,其实都是一样的啊,不妨我就拿第一个元素来说了。
33:06
来,我们去做一个run。你看你看0.0。诶,Float的也如此,那一会儿大家呢,可以自己去测一下,好这就过了,然后下边字符型数组元素这个呢,我们可能得多说两句了啊,这个大家猜一下吧。啊,有的人说是闹是吧。这个没见过哈,一会儿再说,哎,不是闹,先告诉你。那是谁呢?是零。零是这个零还是这个零呢?后面的是吧,嗯,好,还有别的。一个可能性吧。没了。没了,那咱就测试来看一下啊,叉类型的一个数组AR4。你有一个叉类型的。这个呢是一个四。那这呢,我们直接打印A4,嗯四啊,这个我就打印第一个元素了啊,走起。
34:03
哎,走哟。是个什么鬼是吧?这个呢,你有可能在不同的这个编译器当中,甚至说你在控制台上有可能打印的还不是这个呢。哎,这块呢,咱们就哎不要去关注于它这个符号了,哎,咱们看一看它这个值到底是几呢?嗯,可以怎么着处理呢,可以这样子啊。写隐呗。就是它呈现出来好像是那样一个符号是吧,我们写if啊,怎么着,你看这样我把它呢CRC。哎,你不是有个值吗?大家说是它呀还是它呀,咱们都觉得有可能,那我就这样啊,你是零吗。是不是可以这样来判断啊,看看他是不是有输出。那我就写几个一吧。来,那我们接着啊,咱别写else if,那万一他的都是呢。虽然不太可能啊,哎,我就写又一个衣服啊,哎,你看你是不是他呢。啊,这个打印一下,我就写几个二。是不是这样啊?诶,你看它呢,哪个进去了,输出了一了,那就说明是这个啊,输出二了,那说明就是这个。
35:00
其实不可能俩都输出的啊。因为咱们知道这个数呢,其实代表的是48吧。啊,47呀,48。48是吧,诶这个呢是零,也就是说这两个呢,你首先你得知道区别啊,就是我们如果画这个映射关系的话呢,咱不说这边是个小A对应的这个叫97是吧?哎,这呢是一个单引号的零,它对应的是40。八是吧,这个大家可能也记不太住,这个也不太重要啊呃,然后的话呢,然后这个单引号的零是在这儿呢,右边这个是48,然后我左边这个零呢。是这的是吧,哎,它可能是某一个东西呢,去对应的就是,所以问题呢,就是说你到底是这个零还是这个零,其实是这个问题啊,来直接运行。好看一下。哎,出来的是这个一哈,那就意味着其实它是这个。诶不是后边这个,你想后边是48,他怎么默认只能是48呢,是吧,他要真是48了,你不还得想想,很诡异啊。啊,它其实应该是还是从数的角度来讲呢,你得是个零。
36:04
嗯,是这样的啊,其实呢,你还可以呢,这样去写哈。CTRLC和CTRLV我这样去写,但是你看能不能进去啊,杠U0000。对,其实这个呢,是不是表达的也是我们刚才那个映射关系里边右边那个是吧。来,走一下。哎,也进去了啊,哎,所以这里边儿呢,这个零跟这个零呢,理解成是一个意思,所以它的默认出发值是零啊,或者呢,你写成是这个杠U00000都行,它是一个意思。那我就这样写个小括号啊。哎,或者啊,这个理解为是这个。CTRLC粘过来。好完事了啊,现在就是我们说的字符型,它的事儿稍微的麻烦一点。那就意味着如果我们这块拿这个AR40,我要让它加个一,结果呢,其实是不是就一啊。对吧。
37:00
你看啊,A4,我这写个零,我这写个加个一。嗯,走起。是不是就一样啊,因为呢,它这个数不是零吗。零加一不就一吗?嗯,注意一下啊。好过了,下边这个布尔类型,这个猜一下吧。说话方式。False啊,这个呢,往哪去猜呢,为啥你猜不猜出呢?对,零对应的是false是吧,所以咱们讲这个呃,布尔类型的时候,我不是稍微提过一下嘛,真正在呃运行的时候呢,你所有的类型呢,都要放在内存中了,我们也说过了,计算机只认0101。哎,那么这个false的话呢,我们就把它呃用零去刻画了处呢,就拿一去刻画,那现在呢,你看到这个默认值,其实默认都是零啊,所以它就跟false就对应了。OK。或者类型的。这个诶,这个是一个AR5。你有一个哎,波尔类型的,这个你就随便写个长度就行,打印一下。
38:04
哎,就打第一个元素吧。Right。好,这个呢,False难看就出来了,诶跟我们想的呢是没有问题的,所以说上面这些呢,基本上就符合我们的直观的认识。所以呢,大家记起来呢,其实难度也不大啊好,下面呢,针对于引用数据类型,引用数据类型这块呢,咱们其实没有讲那么复杂的啊,也没讲那么多诶其实呢,就提到了一个string比较常见的,我们就以它为代表呢来说。哎,这呢写个六。啊类型的,这我就写一个比如五吧。那这个呢,你可以写个for循环啊,好久没写了,那咱们写一个啊,哎,把这里边的每一个元素呢,咱都变了一下看看。哎,这几个,哎,那这个时候是多少呢。啊,有同学说是闹是吧,诶那个能说是闹的呢,这个一般呢,可能是提前接触过是吧。啊,接触过类似的这样的这种场景了啊好,那我们直接做运行啊,看到这个结果呢,呃,确实就是这个闹啊。
39:05
啊,就是这个闹是吧,然后呢,是他的话,你说是长这样呢还是长这样呢。是这个还是这个呢。第一个对这个事呢,其实很简单,你这块你起个if就行是吧,你说我这个AR6,然后呢,我就拿零来说,我就看看你。是不是这个啊,这个你就打印一下,给我们来一个AA。嗯,再来一组,你说C。啊,你说哎,有是不是有可能是这个呢,你把这个替换一下。BB。你看他打印的是哪个就知道了。A是吧,哎,那说明呢,它长的呢,就是哎这个样子的,所以呢,就不是后边这个,再换句话说啊,我们现在呢,只是拿润为代表去说的,润呢,你是字符串啊,说你有可能带引号,那别的类型它可没有引号了。所以你要说呢,带引号呢,本身也不合适,你string呢带引号,别的都不带引号,那咋理解是吧,OK啊好,那这样的话呢,咱们就把这个事儿呢,就说清楚了,再复习一下啊整形零。
40:03
啊,浮点型。0.0字数形。零。哎,这个我们说呢,哎,或理解为。对,这个呢,记着一定把这个单引号给它引起来啊,诶杠U啊0000,其实这俩呢,就是一个意思啊,我我没写它或它其实叛逆列解成说怎么还是俩值呢是吧。哎,这其实是一个事儿。Force是吧?No。这样的话呢,我们关于这个知识点呢,就讲完了这个事儿呢,大家刻意的去记一下,后边呢,我们讲面向对象中类的属性,属性呢也有默认值也是这个。啊,所以这块大家记了以后呢,后边呢,直接迁移这个知识点就可以了。
我来说两句