00:00
啊,下一个概念也是一个比较这个重要的一个概念啊,咱们这个对象我们先说啊对象呢,它是一个什么呀,它这个概念比较比较抽象啊,我们需要慢慢的去理解,所以我们现在先学的是如何去操作这个对象,然后以后它到底有什么用,我们会越来越干嘛呀,深刻的去理解到这个东西,我们以后会干嘛,会逐渐的就是就是爱上这个对象,或者说以后我们基本上就离不开这个对象,我们是一个什么呀,面向对象的语言嘛,对象对我们来说。很重要是吧,诶对象对我们来说很重要啊,来零八再说一个什么呢?我们叫做基本和这个引用,诶数据类型啊,咱们一直在说这个基本数据类型,还有引用数据类型,大家可能一直在纳闷,这个到底是到底是啥意思是吧?我们来说一下我们基本数据类型,我们之前你虽然不知道什么意思,但是你要知道他有谁了谁呀,String,哎,Number,哎,我们这个booy这个呃,Now,还有我们这个Andy find,是不是一共是这五种啊,还有一个是什么呢?还有一个是我们这个引用数据类型,就一种我们的object object为什么要这么分,或者来说他们之间有什么这个区别,我们来看一下啊,我们来看一下,现在看着我这来一个创建一个变量,直接Y一个A等于一个123,它是一个什么类型啊,诶是个number对吧,诶number是个基本。
01:29
对,数据类型number,然后呢,我们这cancel log,一个A等于加上一个A,这没啥可说的,肯定是什么呀,A等于123吧,诶123,然后呢,我这再来一个Y,一个B等于A,诶Y一个B等于A,那现在我在这再输出一个B等于加上一个B,诶我问你B的值是多少?诶一保存是不是两个值都123呀,因为B是等于A的嘛,对吧?诶然后我再来一个,来个什么呢?来一个叫做A等于AAA等于这个A加十,或者这样写咱们A什么呢?就直接来个A加加,A加加干嘛了,我是不是让A自增啊,A自增A变成几了,是不是124啊,那问你了,此时B的值是多少?
02:18
B的值是124还是123,哎,我这一保存走你A变成124,但是B的值变不变,没变,也就是说A的值变了,但是B的值干嘛呀,并没有发生改变,也就是说A和B它们两个值是干嘛的独立的啊,完全独立的,一个值的变化影不影响,其他值不会影响啊,不影响,这是独立的,好,我们再看一个来一个什么呢?Y一个这个OB接等于一个new一个OB,我这创建了一个这个对象,然后呢,obj.name等于一个这个孙悟空,然后呢,O,诶就这么写吧,我这直接canl.log一个OB接点name我已保存,咱们来看啊,这块走你。
03:07
孙悟空对吧?好,再来一个Y,一个OBJ2等于obj,然后呢,我这打印一个obj2.name,那我问你现在这两个值一不一样一不一样,一保存是不是都是孙悟空啊,OBJ2NAME obg2点内都是孙悟空,那接下来要干嘛呢?我来干这个事,修改我们这个obj的这个name属性,来一个obj.name等于猪八戒,猪八戒我这一保存,那我现在问你obj.name等于猪八戒,毫无疑问,Obj的名字是不是肯定变呀?哎,那问你了,OBJ2的名字变不变,变不变,诶因为这要不变没啥没啥意思了,是吧,他要不变咱们就不用说了,没啥区别了,但是我注意啊,我一保存走你,诶两个猪八戒OB接点name变成猪八戒了,obg2.name是不是也变成。
04:08
八键是不是两个全都变了,哎,也就是说我修改一个变量影响到什么了,是不是另一个了,哎,另一个,那这是为什么呢?诶这个呢,就是我们这个基本数据类型和引用数据的英雄什么呀,区别啊区别,那这块为了说明这个区别呢,我们来画一个这个,画一个这个小图来说明一下,就拿我们这个PPT啊来画一下这图也比较简单,那这块呢,我们就要说到了,我们这个什么呀,我们这个变量还有一些值啊,在我们内存里边的一个结构,我们这一块内存操作的时候,我们可以这么理解啊,现在家这么理解,我们内存呢,分成了这么两大块儿,一块呢,我用一个表格表示啊,一块这个我们起个名,这一块呢,我们叫做什么呢?叫做站。
05:03
这一块起个名,我们叫做一个这个占内存,占内存这是一小块,然后呢,我们这儿还有一大块儿在这儿呢,可能是一一大坨这么一个东西。这叫什么呢?这叫做一个。这这就是我们说的这个占内存还有堆内存啊,占内存还有堆内存两块内存,那我们来说一下他们分别是干嘛的,或者说是干嘛干嘛用的,那我们说呢,我们的这个变量啊,咱们这边一边写一边说啊,一边写一边说我们这个变量,我们这个GS中的这个什么呢?变量都是保存到我们这个占内存中的,占内存也就是谁的,是不是就是我左边这块啊,你看我特意把它表示成一个什么呀,表示成这么一个表格,这么一结构,而且还什么呀,两列,那左边这列表什么呢?表示我们这个什么呀,变量名,右边这个呢,表示我们这个什么呀,值啊,这直接叫变量嘛,就是一个变量,左边保存的是我们变量,右边保存的是我们这个值,所以注意我们的这个什么呀,我们的这个。
06:15
变量都是保存到什么呀?占内存里的啊,占内存里的,那我们来说变量是保存到占内存里的基本数据类型呢?基本数据类型的值直接干嘛呢?直接在我们这个站内存中保存存储啊,直接在我们这个站内存中存储,我们来画一下它们的关系是什么假设啊,我这复制一个复制一个,咱们在这儿单独写一个,把它留成一个根儿,这来干嘛呢?我们来这写下代码。插入一个,现在我来干嘛呢?我这来写一个Y,一个A等于一个123,我是不是创建了一个变量A啊,创建一个变量A在我们内存里是怎么存在的?那首先呢,在我占内存里,你出现外了,一定是在我占内存里创建一个变量叫什么呀?叫A,那我直接在这儿写一什么呢?写一个A,变量A就有了,然后干嘛呢?它给变量A时候赋值了一个什么呀,123呀,所以干嘛呢?变量的值这保存就是什么呀,123,这能理解吧,哎,保存的值就是一个123,这是变量的名字,这是变量的一个值,然后接着往下写,再往下写来什么呢?来一个Y,一个B等于A,我说让B的值是变量B等于A的值啊,那注意它是怎么写的,我这首先需要一个变量B,但是它的值呢,它干嘛呢,它是将我们变量A的值CTRLC在B这干嘛呀。
07:42
又复制了一份啊,又复制了一份,所以注意A和B它都是123,但是A的这个123和B那个123它有关系吗?没有关系,他们是互相独立的啊,互相独立的只不过是什么呀?ABB将那个A的面量在这复制了一份,复制完了以后他俩是不是没关系了?好,那现在我来一个,来一个什么呢?来一个A加加,我是不是使A自增啊,A加加完以后A变成多少啊?是不是124啊?那我问你了,此时对变量B会不会产生任何影响?不会,你A爱咋变咋变,变量B压根就干嘛呀,他不理你,你只要不动我剩下的时候我就不管你,对吧?你只要不来一个B加加,你只有B加加,B是它会变的,其他情况B都不动啊,B都不动,所以注意什么呢?哎,我们基本数据类型的值直接在站内存中存储,值与值之间是什么呀,是。
08:42
独立存在的修改一个变量不会干嘛呀,影响其他的一个变量,所以刚才我们会发现你修改这个A的时候,对B没有什么呀,没有任何影响,这能懂了吗?哎,那接下来接下来说。
09:00
下边呢,我们来说谁呢?下边来说我们这什么呀对象,这是不是还有一大块没说呢?哎,还有大块没说呢,所以这边我们来说基本数据类型值是直接保存到这个占内存中,直接在这个占内存中存储,我们来说什么呢?我们这个引用数据类型,或者说什么呢?直接说我们什呀对象,对象是干嘛的呢?是保存到我们这什么呀,堆内存中的堆内存中的啊堆我们来看什么效果啊,同样我们来写点代码,这里边我来插入,插入一个这个形状,然后呢,我这来一个Y一个obj,等于一个new一个OB Jack创建了一个对象吧,首先你又声明了一个变量,变量毫无疑问肯定是在站里对吧?所以我这来一什么呢?变量叫做一个欧变接啊变量,那注意了,这值就有讲究了,这值暂时我们先不写,值是怎么回事,我们大再说。
10:01
那注意了,我这来了一个new object,一旦看见new了,就意味着什么?就意味着我要在我们这个堆内存里开辟出一个新的空间啊,在堆内存中我开辟出一个新的空间,这个空间干嘛呢?专门用来保存这个什么呀?这个对象啊,专门用来保存这个对象的,那注意了,这个空间是干嘛的,就是保存我们这个什么呀对象的,大家注意了,这是一个什么呀。这是一个空间吧,空间有没有名字呀,没有名字,或者换句话说,我们这变量和我这个对象,这个是我们这个对象,这是我们这个变量,它俩有没有关系。没关系吧,没关系,那你用变量你是不是就操作不了的呀,你要注意了,我这个空间是在内存里开辟的,那既然是内存里开辟的,它就有一个什么呀,有一个内存地址,假设这块空间的内存地址就是一个0X123,诶这是我这一段空间的这个地址,这个空间这个内存地址专门就用来保存什么呀,我们这个obj这个对象呢,那注意了,那他们俩怎么建立联系?
11:15
诶,在我这个变量里保存的是我们这个对象的内存地址,所以我这obj保存的实际上是一个0X什么呀,123,大家注意啊,这个地址是我瞎写的,它不一定是这个地址啊,是我瞎写的0X123,那现在我问你,我这个变量OB接和这个对象有没有关系,是不是有关系了?哎,然后呢,我们这画一个箭头,相当于有一个什么呢?有一个指针指向这个什么呀,对象啊,指向这个对象,所以注意对象本身它是没有什么呀,没有名字的,它只有一段什么呀,内存地址啊,内存地址,所以这里边来说,对象是保存到这个堆内中的镁,创建一个这个新的这个对象就会什么呢?在我们这个堆内存中,诶开辟出什么呀,开辟出一个新的这个空间啊,新的空间而什么呢?而我们这个变量保存的是什么呀,是我们这个对象的什么。
12:15
哎呀,诶,内存地址,那这个内存地址就是我们所说的什么呀,对象的一个引用,所谓的地址就是指的是一个对象的什么呀,引用啊引用,所以注意对于对象来说,我们变量里保存的是什么呀?是地址,这能看懂吗?哎,是地址啊,然后接着来说再往下。再写什么呢?写一个obj,点一个name等于一个孙悟空,现在我是不是往这个obj里边添加一个name属性叫孙悟空啊,那注意了,我这添加我是往变量里添加吗?不是吧,我是往变量里对应的那个地址里边那个对象去添加的吧,所以是干嘛呢?我在这里边添加了一个什么呀,Name name等于什么呢?等于孙悟空是这个效果呀,哎,这个效果啊,所以注意你通过这个什么呀,你在变量里只是保存的对象的一个引用一个地址啊,一个地址好,那接着再往下看,再往下看什么呢?我来一个Y一个OBJ2等于一个obj,那这块怎么办呢?首先Y一个OB,我是不是又创建了一个新的变量啊,所以在这儿我应该来一个OBJ2,那注意了,我有没有创建新的对象,没有,我只是让OBG2,是不是等于obj呀?
13:38
就相当于干嘛呢,我将这个地址往OBJ2干嘛了,又复制了一遍,他俩保存的是同一个地址吧,也就是说什么呢,现在我OBJ2指向的也是。这个对象吧,好,那现在obj和OBJ2它们指向的是同一个对象,那我现在问你,我OBJ2点内读的是谁。
14:02
是不是他呀,Obj name读的是谁?是不是也是他呀?好,那现在来看了啊,我们这来一个obj点一个name等于一个这个什么呢?诶猪八戒啊,这块应该加双引号啊,刚才没有加上啊,现在我修改我们这个obj的内为猪八戒了,那注意了,我通过obj是不是找的是找的是他呀,内容变成什么呢?变成了猪八戒,那我问你了,现在这个obj。二对应那个对象变没变,是不是变了呀?哎,他们是什么呀?同一个对象啊,同一个对象,所以这块注意什么叫哎,保存的是对象的引用,如果什么呢?如果两个变量啊,如果两个变量保存的是同一个对象的什么呀,引用。当什么呢?哎,当一个变量,当哎通过个这个变量修改属性时,哎另一个干嘛呀,哎另一个也会受到什么呀影响,哎为什么?因为他们不是什么呀,不是独立的,不是独立的,这就像什么东西呢?这个对象就像我们这个还是啊说一下我们这个现实生活中像什么呀,你们玩没玩过那种什么叫应该可能没玩过是吧,大部分都没玩,我也没玩过是吧,但是我见过叫什么呀,叫巫毒娃娃啊。
15:28
这是乌毒娃娃吗?就假如说啊,这乌毒娃干嘛用的,假如说我特别恨这个谁的马超,特别恨这个马超,然后我就买一个娃娃在娃娃后边干嘛呢?贴上这个马超的这个生辰八字是吧?哪天哪年哪月哪时乃非我啥都写上他一贴,那现在我们说了,我这乌都娃娃是不是就指向这个马超了?哎,那现在我干嘛呢?我一扎这乌毒娃娃眼睛。马超就瞎了是吧,一扎这个乌毒娃娃这个胸口,他可能这个心脏就停一会儿是吧?哎,那现在我问你了,我这乌毒娃娃是不是马超。
16:03
不是马超是不是就是一个娃娃呀,但是我为什么扎这个娃娃的时候马超有反应啊,哎,因为我这个娃娃跟这个马超是不是建立联系了,换句话说,我这娃娃就相当于是一个变量,它的生辰八字呢,就相当于是马超那个什么呀,引用啊,我保存是不是它的这个内存地址啊,我一扎这个娃娃是不是导致这个就马上就受影响了呀,所以注意对象就像这个乌毒娃娃,我们保存的是什么呀?是地址,是引用,也就是说我们不用真的去拿到这个对象,只需要通过一个变量,是不是去操作这个对象啊,哎,操这个对象,那我们说了,那这又像什么呢?哎,假设这个不是我一个人恨马超这个谁呢,这个王。也恨马超,于是呢,他跟我想法一样是吧,他也弄了一个无毒娃娃,也把这个马超这个生辰八字呀都贴在上边了,那现在我们有两个娃娃,两个娃娃指向的都是谁,是不是都是同一个人呀,就像现在我们这是两个变量指向的是不是?
17:09
同一个对象啊好,那这个王焕这个他下手比我狠干嘛呢?这马超是挨千刀了是吧,直接把这个马超这腿呀给剁了一折,那现在问你,他把马超腿剁了,我那个娃娃对那个马超干嘛了?是不是腿也没了呀,因为我们两个指向的是不是同一个马超啊,同样我们现在这两个变量指向的是什么呀?是同一个对象,现能看懂吧?哎,所以一定要注意啊,变量即于我们这个引用数据来说,保存的是我们这个对象的一个引用,而基本数据类型保存的是什么呀?值就是值,你是一,我保存就是一,你是十,我保存的就是十,而对象我们保存是什么呀?是你的那个地址,我是通过那个地址来干嘛的,来来透透你啊,来透透你,好,这是我们说这块啊,然后呢,接下来我们再看一个问题,刚才这个问题能看懂吗?哎,那接下来我们再看一个啊,那现在我们。
18:09
来看啊,这一块我现在有两个,一个是obj,一个是OBJ2,那现在我来做这么一个事儿,做一什么事呢?嗯,我在这儿呢,把这两个先给它住了,住了然后呢,我直接cancel.log一个obj,然后呢,我这来cancel点一个OBJ2,他俩还是现在他俩是一个对象对吧?一个对象,然后呢,我来设置我们这个OB接二为no,来什么呢?OB接二等于一个什么呀,等于一个no。现在问成那。来我这一保存走你诶obj是不是还是OB black呀,但是OBJ2是不是变成闹了呀,诶就奇怪了是吧,刚才还不说两个变量,你改一个会影响到另一个,这回怎么又不响了,这是为么。
19:14
这叫什么呀,还是这个例子,王焕,我们两个人同时扎马超,但是呢,我良心发现了,我说这个什么呀,这叫什么呀,杀人不过偷点地是吧,咱们别扎他了,我就把这个生辰八字我给他撕了,把这娃娃扔了,我以后再也不扎马超了,但是注意了,跟王焕有没有关系啊,他是不是还扎着呢,所以我不扎了不代表干嘛了,他不扎了,所以这里边这个图也是这样一个关系,我们来看什么关系,我这复制一下,复制回来这个图,那现在来看,我现在做了一件什么事呢?我做了一个这么一个事儿,叫做一个OBJ2等于一个什么呀,那我干嘛了,我是不是将OB接二这个变量的值设置为了那啊现在相当于什么呢?之前我这个变量和我这个对象是不是建立一个连接呀,但是当它把它设置为闹了以后,这干嘛呢?他们连接断开了,哎,他们的连接断开了。
20:14
厨房。哎,断开了,但是影不影响他呀,欧受不受影响。Obj是不是不受影响啊,哎,只是它自己断开了,但是OB接并不受影响,所以注意当你把它你修改这个变量的这个值的时候,对我们什么呀,其他的对象它不会产生影响啊,不会产生影响,好这是一个问题,然后呢,接下来再看啊,再看一个。再看一个什么呢?我们来看一下啊,我这来一个Y一个这个CC等于一个十,然后呢,Y一个这个D等于一个十,我直接来一个什么呢?来一个cancel点一个log c等等于B,判断C和D是否相等,相不相等,保存处吧,来处,然后再看来什么呢?Y一个这个OBJ3等于一个new一个object,然后呢,我这Y一个OBJ4等于一个new一个object,然后呢,OBJ3点内等于个这个沙和尚,然后呢,OBJ4点内等于一个沙和尚。好,那现在呢,我们来输出一下啊,别忘了写分号啊,这来输出一下,直接来一个cancel.log ob3,然后我这输出一个OB接四,是不是输出这个对象啊,这个对象你在这输出呢,还是两个object,所以这啥都看不出来啊,所以呢,我来到web浏览器火狐里来输出一下一看。
21:40
第一个obj name等于沙和尚,第二个obj内等于沙和尚,我们发现这两个对象是不是长得一个模样啊?哎,一个模样,来,咱们来看看。看什么呢?cancel.log一个OBJ3等等于OB。
22:04
处还是false,我就保存走,你false长得一模一样吧,但是还是什么呀,还是错了,这就像什么呀,两个双胞胎长得是一模一样,但是他们是几个人呀,两个人,所以两个对象你长得一模一样,他也是什么呀,两个对象啊,它也是两个对象,来还是画个图啊,这图呢,你们尽量呢学一下啊,画的熟悉一下他们之间的关系,我们来把这代码代码我直接写吧。嗯,这里边呢,我们来插入一段这个文本,首先呢,我这创建一个变量哇,一个OB接三等于一个new,一个O,不OB gecd OB,我们说了,一旦这么写了,表示什么呀。占内存里创建一个变量叫OB间三,然后这写new了,一旦出现new了,在我们这个堆内存里开辟出一个新的空间,用来创,用来保存对象,这块呢,来个颜色,有一个内存地址叫做一个0X123,假设了啊,OBD3保存的是一个地址,叫做一个0X123,那现在相当于变量OBJ123保存的是我们这个对象的一个什么呀,地址吧,哎,保存是我们这个对象的一个引用,然后接下来我们再来走。
23:23
Y,一个OBJ4等于一个new一个OB,我是不是又创建一个新对象啊,变量OBJ4,那注意了,我这又来了一个new,我们说了你每次出现new了,每次创建对象了,就需要在蹲内存里是不是开辟一个新的空间呀,所以注意这里边我们要开辟出一个什么呀,新的。空间这来一个什么呢?0X124来一个这个事儿,这是不是又出现一个对象啊,注意这两个对象是一个吗?不是吧,哎,是两个完全独立的,在我们OBJ4里边保存的是这个0X124啊,我们假设啊,它的地址应该不会像我这么写的啊,那么假设是这个地址这块我一指定。
24:07
是不是他们指向的是什么呀?是两个对象吧,哎,两个对象,然后再看。来一个obj,三点内等于一个这个沙沙和尚,沙和尚啊,然后呢,我再来一个obj,四点内等于个这个沙和尚。诶,那现在我们来看那这块obj点点name等于沙和尚,是不是在这个对象里添加一个什么呀?Name等于沙和尚,而OBJ4点内在什么呀?在上面这个对象里添加一个什么呀?诶内等于沙和尚,虽然这两个对象长得是一模一样,但是他们哪不一样,内存地址一不一样啊,哎不一样啊,不一样,所以注意我们来说一下当什么呢?当然我们比较两个这个基本数据类型的这个值时,就是什么呀,就是比较值,你一跟一里就是比较什么呀,这俩是不是一个值啊,就是比较的值,而什么呢?而比较两个这个引用数据类型时,它是什么呢?诶,它是比较的我们这个对象的这个内存地址啊,内存地址如果什么呢?
25:29
如果两个对象是什么呀,是一模一样的,但是什么呢?但是地址不同,他也会干嘛呀,他也会返回,或或者干脆说白了,你这里边儿的东西我看不看呀。不看,没必要看,直接看什么呀,看你的这个内存地址,这内存地址像什么呀,要像这个人的这个DNA一样,别的都不看,你DNA都不一样,你俩人是不是肯定不是一个人呀,那肯定不是一个人直接比的,就什么呀,内存地址一看,诶,你是0X123,我是0X12,往后的就都不用看了啊,就都不用看了,好,那这个呢,是我们说的一个基本数据类型和引用数据类型,这概念呢,对于咱们来说,你要是结合刚才我们讲那个乌都娃娃那个故事,应该还算不难理解啊,不难理解,但是你需要去消化一下啊,需要消化一下这个概念,一定要捋清楚基本数据类型和隐形数据的一个根本的一个区别,就一句话,基本数据类型保存的是指引用,数据型保存的是引用,或者叫地址啊,叫地址啊,一定注意好,这一块呢,我们来听一下。
我来说两句