00:03
呃,关于这三个概念呢,还有一些相关的问题啊,这里面一共有这样几个问题,我们一个看,首先第一个问题是关于赋值和内存的问题。什么意思呢?我们来看一下证明有这样一个问题,好括号呢?A等于这个是变化的,这个有很多种可能性,A内存中到底保存的是什么?就我这样一做了这样一个复制操作啊,实际上来看一下啊,比如说我过A等于三。那你就说这个叉叉是不是三了,那如果。那也就是说第一种情况啊,它它是一个什么基本数据。那A里面保存了什么?A说A种保存是不是说内存中保存的保存什么是保存的,就是这个数据没问题吧,没问题,好,那除了这还有别的情况吗?那下面你就要说其他情况。
01:07
那下面一个叉叉是什么?是不是一个对象啊,是对象,那保存的什么,是不是对象的定值。举个例子,过A给他行不行?A中是保存的,是对象吗?不是保存是什么?是不是定值好,那我能不能这么做?各位可以吧,可以证明我里面也不写了啊,A中是不是还是保存地址。因为我们这个函数是一个什么对象。没问题是吧,那还有别的情况吗?还有一个叉叉啊,多了一个X是一个变量。
02:04
是吧,啊,什么意思啊,忘了一个B等于ABC可以吧,啊OK,这个这个这个地方这个地方我就不用过了,是吧,虽然说这样可以,但不好A等于。B,那A中保存什么?保证了吗?是ABC。是吧,好来我下面啊,下面再来一个啊B等于啊一个它A等于B。A保存什么?是不是电子值,那也就是说如果我的叉叉是一个变量的话,到底我的内存链保存什么呢?保存的是不是从内上说可能是基本类数据,也可能什么是不是也可能是地址数据。
03:12
但是归根结底,保存的都是叉叉的,叉叉的内容,内存内容。是不是这意思啊,这个内容有两种可能性,可能是什么,一般数据啊,基本数据吧,也可能是什么,是不是地址。对吧。其实做一个复制操作,无非就这三种。也就是说我们写代码的时候赋值是不是很多呀,这种情况是很多的,但是归根结底就这三类。
04:02
也就是说,大家要从很多很多东西里面找出共同的规律去给他总结出来。这是这个来下面我们再看一个啊。关于引用变量赋值的问题,我先写我们再去写那个总结啊,先写写代码啊,问了一个OB加一等于一个对象可以吧,好,我这里面里面放一个东西啊,放个内放个to。好,下面做了一个OB接,Two等于OB减一。可以吧,那这个时候我Bo加二,这是做一个什么操作,这个怎么翻译。将O1的,你又说定值不是定值。是不是它的内存的内容保存到什么obj就只是它的内容是个什么地址,你不要说将OBJ1的地址保存给OB two不这么说了。
05:12
能不能懂啊,OK,好,接着我要做一件事情,我做一件什么事情呢?我ob1.name。等于jack.log OG two.name。是什么,是不是呀。这有不懂的吗?大家都应该懂,对不对?好来看先看一下啊,虽然说很明显,但是呢还是稍微看一下。是这个吧,这里面要说明啊,引用变量赋值的一个什么问题了,是两个引用变量。
06:04
指向什么同一个对象?那我问一下,如何让两个引用变量指向同一个对象呢?或者说。那两个引用变量要有什么特点才能指向同一个对象,他们保存的内容都是那个对象的什么定值?你管它两个三个四个对吧?只要想指向我这个对象,你一个变量必须要满足一个什么,你这个变量不能存数据吗?存的是什么?是不是我这一个对象内存的什么地址值?能不能理解,也就是说,你无论你是什么变量,你叫什么名字,你要想能够去指向我这个对象,必须满足同样一个特点,你内部存储的数据是0X什么?
07:03
123就可以。是吧,那我要想让它存储02023,我的操作可以这么做,譬如说将我这个对象直接赋值给什么。变量也就是这个OB1呗。对不?那我后面的对变量想指向这个对象,该怎么办呢?我还有一个OB two啊,我怎么样才能指向这个0X123所指向的这个呢?是不是我的值应该也必须是0P3了,那我要想达到这个目标怎么办呢?变量赋值是吧,也就是说将我这OB加一赋值给什么OB加Q是不是就可以,我们说将一个变量复制给另外一个变量是做个什么事情,是拷贝右边的变量内存的内容复制给左边的变量。
08:03
是吧,而这个内容存的是不是就是这个对象地址。那我还能直接将这个对象复制给他吗?我开始是不是做了OBJ1等于这个对象,那我能不能又将这个对象复制给这个OB two了,行不行,行不行,我又写一句话就落了1O就等于一个大括内五套行不行不行,为什么实际上那就套进了什么两个对象呢?我们要指向什么。同一个。能理解吧,好,能理解这是第一步,两个引用变量指向一个对象啊,通过一个变量其中一个变量修改。对象内部数据。
09:00
那另外一个变量能看见吗?另外一个变量,也就是说另外一个变量能不能看见,他看见的是修改之前的数据还是修改之后的数据?修改之前,修改之后,另一个变量看到的是修改什么之后的数据?如果他输出借口,就说明了我刚才说的这句话。也就是说白了,我就是将这句话是不是跟这跟这些语句是不是对应的进行一个翻译。能不能或者它我把这个去掉。我把这个去了,那下面你要能根据我这句话写出一段测试的代码来,去验证这句话是否正确。N懂不?那我再给他写一遍啊,这个也非常关键的,其实好,首先要有两个变量向同一个量,首先你搞一个引用变量。
10:07
是不是指向它呀,指向这个对象呗,这不我对象嘛,好歹往里面放点东西是吧是吧,好,接着我要想用两个引用变量都指向它怎么办?是不是将OG1复制给他,现在我们写两行代码,是不是已经实现了这一句话?那后面第二句话,通过一个变量修改对象内部的数据,我通过OB加二行不行,也就说obg2.name啊,或者说这。我是不是加了一个属性,无论是你这是不是也修改啊。啊,也修改好了,那下面我怎么证明后面一个了,另一个变量看到的是修改之后的数据怎么写,OB接1.a才有意思,你要讲那没意思。
11:09
不就是这样的吗?是吧,因为你要看到是修改以后内没什么好看的诶。是吧,好,这个很明显,那我告诉一个有点小隐蔽的,我定一个函数是吧,来,我接收欧。好,接着呢,OB接点。Name等于包裹,这是我第一个函数啊,函数要不调用有意义吗?就是我定的函数,我不去执行有用吗?没用,用函数就来执行的,好,下面我执行。直行呢,我传OBJ1。是吧,那现在来看啊,现在我OB接触点内是多少呢。
12:10
是烫还是包裹?我也有很多同学说说,他说包Bo都是大概应该是,我觉得应该是老师的意图很明确的应该是包Bo。是什么?怎么感觉像好像意见不统一似的是吗?我天呐,我我换一个换换换一个换一换一个,你的发音不太一样的,你你我都听不清楚,你们到底是用的汤姆还是包是什么。好了,那为什么是A了,那现在你来看,现在相当于有整个过程中有几个引用变量指向我的对象几个三个。
13:06
OJ1J two还有一个什么OJ。是不是,关键的问题就在于我这个调的时候是做了一个调用的时候,是不是把这这这叫什么名字,这叫什么时参,而我这个叫什么行参,我执行的时候是不是将时参赋值给什么行参,那你说我OE里面保存的是什么?是不是保存的是OBG1的内容啊,变量赋值嘛,刚才不说过了吗?是保存内容,只是它的内容是一个什么值,地址值指向的是谁?是我刚刚创建的这个对象啊。是不是就是我这个大对象对不对,你不懂,那也就是说我们现在是不是有三个引用变量指向它前提啊,你一定要对变量赋值,其实变量赋值很很固定,将变量的内容赋值给另外一个变量。
14:11
是吧,只是这个内容是一个什么地,我反复跟大家念这句话,大家一定要是真正理解了才行。嗯。大家想我obj点内是不是找到的是对象里面的内属性。是不是修改了,还是印证了我刚才这句话吧?通过一个引用变量修改对象内容,另外一个引用变量是可以什么看得见的,或者说其他引用变量啊,我们不一定是两个吧,我可以说是多个引用变量。或者N个吧,是吧,这个N是不是大于等于二倍可以吧啊OK,其他所有变量行吗。
15:05
是不是这意思,嗯,这个先搞清楚,嗯。刚才的这个是多少12是吧,嗯,比较简单好,我们说另外一种情况,说一种什么情况呢?来啊,呃,过了一个,这次我就搞一个比较不好看的名字,过了一个A啊,给一个对象啊,这个要我换一个名,对吧,换一个属性。啊,等于A等于四三。那下面呢,我接着啊,我接着过来一个B等于A可以吧,好看到啊,那现在我去通过B看在一起是不是就是二呀,是吧,好,我现在做一件事情,我搞一个A等于。
16:00
啊包好,现在我问大家,我我的B里面有什么属性呢。有什么属性,有没有,有没有没有。好,那我这个地方啊,我我看一下。好,现在我的A,我的A里面呢,有没有内蒙有没有,那理解这个太明显了是吧?啊A里面有没有也有现在问输出什么呢?二那b.a是十二十三。12。有说13的吗?所以有人想说不敢说是吧,这是13是不是好,我们来看一下看看看看是不是啊。
17:08
是不是12包裹13呢,没问题吧,那这个是在去说什么呢?大家看看啊,前面我还是有两个吧,嗯,说的过不太好说,两个引用变量指向同一个对象,开始是不是在那。这两部吗,是吧,好,那看能。让其中一个引用变量指向另一个对象。啊,就像另一个对象,那你说我的开始那个对象会不会成为垃圾对象?不会。不会,那也就是说另一个引用变量还指向谁?是不是前面那个对象,另一个引用变量,引用变量依然指向什么?是不是前一个对象啊,依然指向前一个对象是吧?好,而且你要知道啊,譬如说啊,举个例子,我我搞一个A啊搞个b.a几等于14。
18:28
请问我这个a.a我现在的打印输出会不会变?第一个变了14对不?而第二个A级变了吗?没有为什么,其实非常简单,咱俩都无关,没关系了,你搞你的,我搞我的对不对?这意思吧啊,你操作你的对象,我操作我对象,咱俩相互不关联。你说老师刚才不是指向同一个对象吗?你后面不改了吗?
19:03
是这个概念吧,啊,这个搞清楚好来,我再搞个隐蔽点的FN2。也是来一个对象,这个是有时候就经常容易容易搞错。啊,方案我传OG,我不是传传那个传那个A。创业吧。好,请问现在我a.a已是多少了?13。这个就非常关键,哎,这个地方好像大家不太确定了,是不是。
20:01
好,来看着啊,这是那个A是不是这是那个obj为调用没有obj的吗?他们开始是指向什么,你不把A负这个OB接了吗?他们就指向的是不是同一个对象,而那个对象里面的A级是多少?那是多少?刚才不打印输出了吗?是13。对不对?好,接着我做了一件事情,我OB接底等于不是点,是等于什么意思?那我是不是又创建了一个对象?A级等于多少啊,是不是15接着把这根线断了。不在了吗?是还是不是。好,那你想想看,我们执行完了以后,我是不是打印A减AA减A是多少13,我问大家我现在还能取到15吗?我现在还能取到那个15吗?
21:16
有不能举报,那也就是说后面我再说一个,现在的15去哪了呢。在里。这个对象其实会成为垃圾对象,为什么会成为垃圾对象呢?我的函数一执行完,函数执行完了以后,有个什么事情要做,有个是有个什么事情就会自动发生,函数内部的什么局部变量就会自动的什么是不是释放,那就不叫回收了,局物变量会不会自动释放?一旦释放了以后,我的这个对象就成为了什么对象,我这个对象本来是不是obj指向的,Obj是被自动释放了,那你想啊,他不就成为什么垃圾对象了,我还看得见他吗?
22:05
看不见,其实他不在了。能理解吧,嗯。也就是说你看到这里啊,我们这两条语句。就一样啊。是不太一样啊,一个是是不是给原有的对象上面是不是添加设置属性,而这一个呢,下面修改谁啊,是不是修改这个引用变量的值啊,是不是修改这个变量值,这一个变量本身开始是不是只保存了是不是这一个对象的地址。是吧,因为你是把A负来的嘛,那不是保证它的定值吗?那你现在搞了一个等号,那不给这个变量重新附了一个新的值吗。那这个线还在吗?不在了,也就是说我的A经覆盖这个了吗?我的这一个下面A级有没有覆盖上面的一级有没有没有这是两个对象啊。
23:08
能看到吧,啊,这个大家应该得好好想想啊,即使你现在看懂,我告诉你,到了真正去写东西的时候,你会发现啊,一下一不小心就保住了。因为这一点是非常容易犯错误的一个点。但首先大家还是要把基本东西搞清楚。这两句话大家应该要能够去看的。啊,这里面还是用两个吧,啊,可能好看一点。多个是一个意思对吧。没什么太大问题吧?干啥呢?这是。不懂的举手,不懂的举手,赶紧举啊,没机会啊,就一个同学,那算了,等会再问我啊,还有同学是吧,等会问吧,等会下去你得自己还再再反过来,你吞进以后,你现在就是吞进去了,你再给它嚼出来嚼一嚼好吧,行,我先这两个先说这。
我来说两句