00:04
行了,那么接下来咱们接着往下看啊,接着往下看,那再往下的话,嗯。我们刚才说到这个站这块叫mada是吧,哎,站这块啊,那么站这块的话,咱们。有一个object的一维数组。这个是个万能的口袋,就表示它里边可以存储任何引用类型的数据吗?是不是?那接下来大家想一想,属性私有化了,我们要不要提供S的方法呀?这是个习惯嘛,你不要问我为什么啊,这个没有为什么,也许这个get的方法和set方法用得上,也许用不上,不管用得上还是用不上你,总之属性私有化就应该提供赛盖的方法。明白什么意思吗?啊,这这个东西你不要再问我老师,我为啥提供这个东西,我以后不用你用跟不用你都得写,而且你不用写在工具里边生成就行了啊set和get也许用不上。
01:06
啊,但是你必须写上,这是规矩啊,这是规矩你使用idea生成就行了,封装当时怎么讲的封装。封装第一步,属性私有化,第二步,对外提供什么呀?Set和get方法。对吧,用的上用不上你都写上,这是一种习惯,习惯啊,习惯好了以后,也就是说你想想拿到这个数组你得调盖的方法,你想你你你你想干什么呀,想想改一下这个数组,你得调S的方法。对吧,调get的方法取数组调set的方法给这个数组传传嘛,你看是不是set调set的方法传过来一个参数,这个参数是不是付给了这个属性啊,对吧,这样。
02:01
别多想啊,永恒老师这个返回值类型怎么还是这种东西啊?这是什么快捷键?难道你一直没用吗?Out,加insert呀。大家如果不用快捷键的话,我觉得你开发效率太低了啊。来,各位继续看。Out insert是不是生成构造方法?你看第一个。Constructor构造方法,你选下边这个select none不就是无参构造吗?对吧,哎,你再来一个,你可以提供一个有三的过的方法呀。是不是有参数的构造方法啊,这是有参的。是吧,哎,你可以提供,你咱们就提供一个无参构造吧,行吧,提供一个无参构造啊。
03:06
那假如说默认默认这个站的初始化容量是十。假如说啊,默认就这个题目的要求,我可能需要在这儿再加一条。假设站的默认初始化容量是十。请注意无参数构造方法的编写方式。这个无参构造,也就是说将来是不是外边程序员要拗你这个对象的时候,调你用你这个my stack对象的时候,是不是要调你这个my stack无参数的构造方法呀。是吧,假设占的默认初始化容量是十的话,你说这个数组默认要创建什么呀?动态初始化多少?十吧,是不是数组一维初组动态初始化。
04:05
对吧,这个吧,哎,this.element elements啊,这个等于什么new什么呀,Object,然后中括号里面写个十。能看懂吗?要默认初始化容量是十,默认初始化容量是十。或者说人家题目要求,假如说默认初始化容量是100,那这样的话,你这个位置就得new一个object数组写个100。你没有这步不行啊,你没有这步的话,你想想它是不是空。因为你调无参数的构造方法,你不给这个属性赋值的话。他这是不是啊。对吧,啊。而我这个题目就得有个要求,假设,假设人家真的调你这个无参构造了,调你无参构造,你说你默认这个站存多少个元素,那你有个默认的初始化容量,假如说题目要求啊,怪我了,各位啊,怪我了,这句话昨天没写,我不知道你们怎么写的。
05:15
就这句话,我昨天没写,怪我了。昨天我应该在这个题目里面写下这句话,假设占的出装容量是十,请注意无参数过的方的编写方式,这个没写,我估计你们写不出来。无参数的构造方法这块。是不是每调这个无参构造。界面手动初始化时大小可以。用的是有参出装,可以没问题。没问题啊,你们能写出来那当然是最好了啊,Als new一个什么呀,Object数组。写个十,柳彤老师,为啥是十?题目规定的默认初创流量就是十,你写个十就完事了。啊。
06:00
这行代码。你写到这儿也行,你不写到这儿,你直接写到它后边行不行,各位给个回应。直接写到他后边行不行?就相当于在这你有一个int I,直接付一个零行不行,或者直接付一个100行不行。一样吧。这个I等于100,写到这儿和你这个I将来在这个位置上负一个值100是不是一个道理。大家想一想。因为我说过,就算你写到这个地方。这个等号赋值在什么时候做,是不是也是在构造方法执行的时候做赋值,因为这是个成员变量啊,啊,这是一个实例变量,这是类里边的一个属性吧,这个属性在等号初始化的时候,是在什么时候初始化?
07:00
当时让你记了。对吧,在构造方法执行的时候赋值吧,那你要不愿意在这儿写的话,你在哪写呀?啊,你在这写呀。你可以给它附上值啊,你前面这个Z可以加也可以不加都行对吧?哎,然后呢,通过等号的方式附一个值嘛。对不对,哎,负一个值出装量十呗,那这样的话我们也可以这样做,都行啊都行,你看你怎么做啊,这种方式行啊,你不愿意用这种方式,直接在它后边用等号的方式也可以。总之它这个赋值都是在构造对象的时候怎么着。执行。啊,执行行,那这个我就不用这个了啊。这种方式this element等于new一个object。
08:05
构造方法,无餐的啊。无参数构造方法默认初始化。站。容量是。假如说就是存十个啊,存十个好了,那我们属性私有化赛的方法,Get的方法有了,我说了这两话,用得上也用不上对吧,用用不上用得上咱们都得生成这个方法,这是无参构造,咱们写上去,那么接下来看题目的要求啊,他说在战中提供一个push方法,模拟战,模拟压站,提供一个泡泡方法,模拟弹战。你鸭蛋应该是往这个里边放东西吧。是不是,哎,你谈战是不是应该是从这个里面弹弹动往外弹呀。对吧,好,那你这里边是不是应该应该还有一个战争啊,各位是得是不是得有个战争。
09:04
永远指向什么?永远指向站顶部吧。是不是哎,占顶部元素。那默认初始值是什么?那么。这个默认初始值应该是多少?注意,最初的站是空的,一个元素都没有。那你这个战争应该怎么办呀?比如说index吧。它的默认初始值给个几啊各位。就你最初这个站是空的。里边啥也没有。
10:00
有战争的概念吗?战争应该指向这个这个站里边。顶部元素吧。那现在你刚刚创建出来这个。站的时候里边没东西啊。啥没有啊?啥也没有,你这个战争。是不是就没有啊。哦,给了零,给个负一行不行。哦,觉得零最好操作了。都行。对吧,都行啊,你如果给一个零的话,那就表示你这个战争永远指向的是什么呀。
11:04
就是负一比较好。负一不是那么好操作。给个零就代表上来战争就指向什么数组的。第一个位置。等于零的话。战争上来是指向什么呀?数组的什么第一个位置。是不是啊?那也就是说呀,你如果等于零的意思,就代表你每一次这个战争都指向什么呀,指向。指向我们什么?想一想各位。如果index采用零。表示战争指向了。顶部元素的上方。
12:01
啊,Private int index,如果等于负一,默认值给它一个负一。对吧,哎,如果index采用负一。表示战争。战争指向了顶部元素。一个是顶部元素的上方,一个是顶部元素。啊,如果index采用了负一表示指向顶部元素,当然你这个属性。嗯,我看看啊。这个属性你也可以给他提供了赛开的方法。注意啊,你还可以采用这种方式写。在这个构造方法里边,给index负一个值行不行?可以吧,Index。
13:02
就这呗,点index等于多少啊,构造方面等于多少负一啊。我说了,你写到这儿和你直接写到这儿是一样的,因为你这个赋值都是在构造方法执行的时候赋值,所以你写到这儿没问题,你写到这个里边也没问题。啊,然后这是有一个属,这个属性呢,提供赛盖的方法,这个属性私有化,你也可以提供什么呀,赛盖的方法啊,但这个赛盖的法确实意义不是很大,各位啊,意义不是很大,来set我们可以选上去。对吧,哎,Set index get index不管用的上还是用不上这个set的方法给它生成一下。对吧,然后构造方法有一个无参的啊,然后假如说我们初始化是负一。初二是负一。啊,这个初始值是是多少给了多少,给了十个元素是吧?哎,这个初始值给了一个负一啊,然后接下来你就可以干什么呀,我各位啊,能写出来这个程序不易啊,不易,咱们班应该写出来不多啊,应该写出来不多,可能只有那么几个学生啊,这个东西其实有一定难度,因为你毕竟啊还没有这种,呃,编程的这种思想现在还没有啊。
14:12
想不到啊,想不到,来,我们提供一个压站的方法。压站push这个方法是不是将来别人去调这个方法,然后传一个参数,把这个东西压到这个数组里边啊。对吧,大家想想,所以这个方法需不需要参数啊。需要吧。Element吧,叫ele得了元素。或者OBJ都行,或者O都行,对吧,起个名啊,这个方法是负责压的,那压往里边压,你愿意返回布尔类型,说压成功了或者压失败了,你愿意返回布尔类型,可以返回布尔类型无所谓啊,我们这里呢,就不返回任何数据了啊。嗯。
15:00
啊来。这是一个压站的方法。啊,这是被压的元素吧,被压入的元素吧。是不是啊,那好。什么情况下表示占满了各位。什么情况下?表示站已经满了。因为你最初这个index等于负一啊。你加一之后呢,就变成几了零了吧。是吧?战争等于速度长度。战争等于速度长度。
16:00
减一吧,得。现在速度长度是几啊,各位。三对吗?如果你这个index。要等于等于三的情况下,是不是已经飘出去了。是不是已经指到这儿了?所以你这块呢,应该判断一下,如果你这个index。明白吗?这get index啊,或者是index。你如果。你写大于等于比较好。大于等于谁呢?这个elements。对吧,哎,This elements点什么呀。
17:02
减一。就说明没有满还是满了。Index小于elements。Index大于等于elements.les减一。说出一句话吧,占已满。程序结束了。压战失败,战已满,大家都知道,如果return语句执行,整个方法是不是就结束了,程序能执行到这儿,程序能够走到这里,说明站没满。
18:04
对吧,你站要是没满的话,你是不是。应该。让。Index。加。加加之后this。这个啊。this.elements。中括号index是不是等于obj?不太好想各位。
19:09
This点都可以省各位啊,你把它省掉也可以。那我在这我就省了吧。行吧,这个我也省掉。Index,你看这省了吧。这也省掉啊,别带这些东西了。你看这个index不就是它吗。它的初始值是不是给了个负一啊。对吧,初始值给了个负一。你往里边加一个元素,你要不要让index加加。因为你要战争,要移动啊。对吧。你像什么呀?像站中加一个元素。战争向上什么移动一个位置?
20:04
所以你index要加加了。原先等于负一嘛,你加加之后就变成零了嘛,那这个位置不就是零吗。好,这个对象是不是就放到这个数组的下标为零的这个位置上了。啊。那如果第二次再去调这个方法push的话,这个时候index再加加是不是变成一了。是不是把对象放到一的位置上?如果你再调这个方法,那现在是不是变成几了。变成哎,Index加加呀,你加加之后是不是变成二啊。因为你这样写index嘛。对吧,哎,把它OBG放进去。
21:03
直到是说有一天你这个index等于九了,各位看好了啊,加加之后变成九了,那么由于你这个数组它这边的长度是十,明白吗。长度是十,你现在已经变成九了,Obj已经放到九的位置上了,接下来你再来push的话,好,这个index等于几个位。现在是不是等于九。这个elements点是不是。十减去一是不是九九是不是大于等于九,这个条件是不是成立了?成立之后是不是战已满压战失败呀?程序是不是就结束了?因为你上一次在执行这个push方法的时候,这个元素已经放到下标为九的位置上了吗?这个不太好想。
22:00
Index大于等于点S减一的情况下占一码。Index加加,其实这两行代码可以合并,先自加一,后赋值,所以完全可以把这行代码删掉。在这里加上一个加加。加出现在变量前表示什么意思啊?加一赋值。很久以前,很久很久以前,我们讲过,加加出现变量前是先进行自加一操作,再赋值。你要不理解,你就用这种方式。先这不在这儿自加一吗?然后在这儿是不是负的值啊。那先自加一后赋值,是不是可以让佳佳出现的变量前,变量前的话是先自加一后赋值,之前学过这个呀。所以你要想不通,你就这样写就完事了。啊,那么程序到这儿的话,你就可以。输出什么呀,对吧,哎,压战成功。
23:01
战争指向什么?Index。呃,为什么要有个for循环啊,你可以在外部程序里边调push啊,每调一次执行一次啊,每调一次执行一次啊。你可以在测试程序里面调啊。你应该在测试程序里边去调啊,你提供一个push方法是往里边压一个元素。你应该在外边测试程序main方法里边写循环。血循环去调这个方法啊。元素。鸭蛋成功,战争指向哪哪哪?对吧,压什么成功啊。压OBJ呗。这压占这个元素。
24:00
成功战争指向谁谁谁?嗯。
我来说两句