00:00
好,有同学问老师,什么是实力啊这样一个概念是吧,我们来说一说啊。我就放在这里面说一下好吧。实例,这个实例实际上它是一个简写,叫实例对象。美女吧,那跟实力对应的有一个什么呢?叫类型。啊,类型好啦,那其实也可以把它称为,我有时候称为什么呢?叫,那你实力叫实例对象,那这里面呢,有一个概念叫类型对象,举个例子大家懂了,比如说我来去定义一个函数叫什么呢?叫person。是吧,我这里面呢,有一个name,有一个A级,下面写什么大家应该很清楚,怎么写this.name等于name z减A等于A,那下面我会写什么代码?
01:12
其实大家应该要能推测出来我后面会写什么代码,是不是Y一个P等于六一个什么行,那这两个概念都有了啊。这一个person是一个什么?是构造函数,我们是不是称它为构造函数啊,构造函数是吧,那实际上它就是什么呢?我们所说的类型。那我问大家它是不是一个对象,是不是是为什么它是对象,怎么理解函数嘛,刚刚说过了函数是一种什么特别的对象,对不对?好,那而我溜了一个person最值,最终负这个P,那现在产生的就什么。
02:06
根据类型创建了什么东西,根据类型创建的实例对象对不对,有时候我们可能就不说对象了,直接说什么实力。那类型是不是个对象,是因为类型不是我们的函数吗?你说老师这不是函数,这是构造函数,那构造函数也是函数啊。对吧,啊,你要找清楚落脚点,其实你在定义这个函数的时候,它就是估值函数吗。什么时候才能确定它的构函数,六的时候其实才能确定它是构函数,老师那你就说错了,不是,主要是我这里面是不是想把它当成构的函数设计的,怎么看出来的,对,大写的。对吧,但实际上我能不能这么调了。
03:04
能不能啊,这里面好,好歹传一个东西是吧,好歹传一个东西啊,不传东西好像不太好似的。我能不能这么调?可以吧?那此时person还是勾的函数吗?是,但不建议这么用,能理解吧?就你的设计意图,是否当成构造函数来设计的,你去这么调,从语法上来说是合法的。对吧,但从规律上来说,从原则上来说是不应该的。能不能理解啊,这个大家应该要清楚,一般我们不会这么做是吧?那个刚刚才同学听清了吗?我不知道是谁啊,我也搞不清楚啊。啊。那说了这两个东西,我们下面说关于数据类型的,这里有三个问题。
04:01
啊,这三个问题也是经常面试问到,第一个是undein和long有没有区别?有区别吗?他们好像都代表什么东西都没有,是不是我们说了那个基本类型是不是五类是吧,五类有三类基本类型嘛,我们说基本类型是不是五类四类。你说四类的不五类吗?有三类我们生活中常见的,对不对,这个没什么对吧,但是有两类是生活中不常见的,所以说你会觉得有点小复杂,那我们说unde这个类型的数据代表什么呢?Undein值是unde DeFine,它还真不代表未定义,不是代表未定义。代表定义了未赋值。对吧,而我那代表什么呢?负了值定义be什么负了值,负值了只是值,为什么值,为了什么意思,你写你就知道,看到这里啊,看第一个。
05:13
我们来写一写大家就知道了。首先我问一个A。是吧,那它的值是什么?我去打印输出这个是不是就是find的呀,是吧,那我想我最后让那个A是long的话,我该怎么做呀。我是不是给他副职去。能不能理解啊,OK,那也就是说现在第一个A输出的是什么?And find的第二个A输出的是什么?那有趣吧,有。
06:00
啊,这个大家是应该要知道的。这些都是一些小知识,但是这些知识都是比较基本的,那必须每个人都很懂,没问题吧,没问题,那下面出来另外一个问题啊,另外问题什么问题了,是什么时候我要给变量复制为浪呢?哎,这是不是问题。我都没想过,那你现在要想。就是说来我们来一个啊,其实很简单,就那他的table是一个什么字。是object是吧,啊是object,但是说实话,我的这个浪值,首先它什么类型,什么类的数据,是不是基本类型的数据。其实这个type在这个上面就是有问题的,你懂吧。你想想,你这不矛盾吗?矛盾吗?矛盾?为什么矛盾?你想啊,这个long值它是个基本类型,接着我type的时候反回来又什么object,从类型上来说它是矛盾的。
07:11
对不对,但是他是另外一种想法,什么想法呢?就是我定义一个变量,我准备给它复制为对象的。能懂吗?我后面我准备给他负责为对象,但是现在有个问题,现在问题是什么呢?我现在数据还没产生,对象也没产生。我现在还不知道。怎么办?我先一上来就先复制,为什么呢?那来表明什么意思?我将要把这个变量复制为一个什么对象?别人一看就知道哦,你这个就复读的老师,我一看自己就是个对象,行,那我改一个这不是对象了吧。
08:02
对吧,啊,你不要看名字啊,这个名字是为了让大家理解这个东西啊,我就用逼吧,这一个是表,这是初始赋值,初始赋值为那是为了什么。是不是表明将要赋值?为什么将要赋值?为什么是为对象啊?这别人一看是不是就能懂?能不能理解编程是很严谨的?你说老师我我不会让行不行,你说行不行,肯定可以啊,我我只是为了让那个程序员看的时候,我一看就知道,到时候这个B肯定是个对象。能理解吧,你就不复制为量有问题吗?没有,当然没问题啦,你到时候复制为对象就对象呗,有什么关系呢?能不能理解好,那后面后面我们是不是就有可能P说B搞一个对象,我搞一个数组行不行,是数组也是对象啊,啊你我反复跟他强调数组也是对象这样概念啊好。
09:14
可以吧,啊可以现在不确定数据了吗?我是不给他了啊,确定对象就什么复制。对不对,好,这是一种情况,还有一种情况到了最后,后面程序的最后。最后会怎么着呢?最后我要做件事情,B等于了。也就是说在开始的时候,在起始的位置我是不是复之为浪,刚刚说了是为了表明我后面要怎么用啊,起始的时候,那最后为什么要复之为浪啊?对,释放谁是不是释放这样一个数组,这个对象所占用内存啊?
10:04
我要不负责让这个数组会四方吗?会不会,不会,为什么不会引用,大家要知道对象它有一个概念叫垃圾对象是吧?那什么样的对象成为垃圾对象呢?是没有引用指向它呀,那也就是说现在我的这个数组是由谁指向它B,那最后的最后,我为了尽早的释放,我应该怎么做?把B复制,为什么那那样的话,本来这是这不是一个变量嘛,引用变量这是一个对象是不是,而这个这个变量是不是指向着它呀,是吧,让它那这一个对象会释放吗?不会,那为了让它释放怎么办呢?是不是把它切断了是吧?把它切断怎么切断呢。
11:00
B等于浪。是吧,啊。干嘛去让B指向的对象成为什么?什么对象垃圾对一下。垃圾圾干嘛?垃圾不是释放吗?准确的概念应该叫什么呢?回收,被谁回收?被谁回收浏览浏览器也没错啊,因为那个那个东西在浏览器里面啊,被垃圾对象啊,垃圾回收器吧,不叫垃圾对象垃圾回收,嗯嗯。回收器是吧,这个垃圾回收器在哪个里面呢。是不是在浏览器的内核里面啊,OK,好。这个能懂吗?那我问大家啊,我问大家一件事啊,假设我不用这个,我问大家一件事,看大家明不明白,我B,我B等于二行不行。
12:09
行吗?切到那个线没有切到了。那个对象会不会被回收?会,但是我这么做好吗?不好,为什么,因为我是不是为我现在做这个事情,仅仅就是为了是不是释放这个数组对象啊,好了,你小子好,你想是不是又存到一个数据存到B里面去了,但这个有意义吗?没有意义,懂不懂这个要搞清楚啊,我这么做实现了我让这个对象成为垃圾对象的这个目标,但是你是不是又新产存了一个数据,而这个数据是什么没有用的。对吧,啊,所以我们不应该这么做,我应该什么等于那。懂了吧,那也就是说我们现在是不是两种情况。
13:01
第一种是什么,什么时候,一个是初始赋值。为了什么?表明变量要复制为什么对象。是吧,还有一种。还有什么是最后吧,是不是结束数,结束时结束前干嘛?不止。是为了表明什么?知道吗?是不是为了让对象成为什么垃圾对象,进而被垃圾回收器去什么回收?没问题吧,没问题,好,我们下面说第三个问题。我们要去严格区分变量类型和数据类型,有一个问题,我们第一个我们说数据类型啊,这里面是不是有个对象类型,也称为引用类型啊。
14:01
其实这个不太严谨。什么意思呢?我们来看一下。数据的类型和一个什么呢?变量的类型。来我们来说啊,其实这个呃数据这个数据类型,它其实分为什么呢?基本类型和一个对象类型我先写了啊,而这一个变量类型呢,分为基本类型和引用类型,什么一个概念大家想啊,我来去写一下大家就知道了,我来看着啊,握一个握一个C等于一个等于一个它。来看这是不是我那个对象数据。是吧,这这个数据,这个数据是什么类型。是不是一个对象对吧,那有时候我们有有可能说,哎,这是个引用,这是个引用类型吗?它是引用类型吗?何为引用类型,是不是。
15:09
大家知道这个C里面存的是什么?C里面存的是什么?是不是存在这个对象的地址?对不对。那你想存的例子是不是存的是这个对这个这块内存的引用啊。能懂吗?这是一块内存,在堆空间里面。对吧,而我的这个C是在什么占空间里面对不对?而我在对空间里面是不是创建了一个对象,而一个对象它是我现在把这个对象赋值给了谁C是吧?C保存的是这个对象吗?不是,是保存的是什么地址值。能不能懂啊,那你想啊,我的声音本身是一个对象吗?是还不是不是只是说我这个C能找到一个什么对象。
16:10
因为它保存的是对象内存的什么地址值。现在能区分了吗?能不能你就严格来说,我们的那个数据,它确是分为基本类型和对象类型啊,变量类型实际上是什么呢?变量值的类型。变量啊,内存值的类型,也就是说大家知道我们GS是个弱类型的语言是吧?变量本身它有类型吗?没有,变量本身是没有类型的,不知道大家能不能理解这句话,也就是说你看我生命一个变量用什么好吧,它有类型吗?没有,我那有时候我们去判断那个那个变量类型,实际上判断是什么值的类型。
17:01
两分种,但啊,但也有不同的地方,我们来说,那我一个变量的值怎么是一个基本类型呢?什么时候是个基本类型,它保存的就是什么基本类型数据。对不对。能不能懂,那我怎么知道这一个变量是一个引用类型的变量,保存的是一个什么值地值?懂不懂那个地值和一般的值它一样吗?它不一样,那地值起什么作用呢?是不是我这一块内存假设是个ae,它里面保存地址,它是不是指向另外一块内存?是吧?它不是地值吗?它里面保存的是地值吗?假设它地值叫0X123,那我A的值是什么?0X123对吧,好。
18:01
能看到吧,能看到,那我们现在根据这个A是不是就可以找到这块内存是不是啊,进而去操作它里面的数据,对不对啊好。那我还是要问一个事情啊,你说我们用type。啊或者啊,假设啊,我们用type of c,他看的是什么呢?它有它这个东西,你想想看。啊,我故意搞一个函数,这个C是不是是个引用变量。是不是是还是不是,为什么?是因为函数是一个什么对象,我将一个对象复制给一个变量,实际上做了一个什么事,将对象的内存的什么地址保存到C中。那现在我Type C返回的是什么?返回的是不是function,你说他怎么知道的呢?
19:07
怎么确定是发言,也就是说我只看这个C。以及它里面的值,能知道它是一个函数吗?不能,那最终我是不是要根据这一个存储的这个内容去什么,去找到这个内存,发现才发现它是个什么。它是不是个函数对象啊。能懂吧?难道?但是我其实平常的时候,我们会严格区分吗?不会。其实我们平常的时候不会严格区分,就是对象类型,我们就把它看成什么引用类型一样的看待。你说他们基本是什么?是不是等同的?但是如果大家知道这个事情还是挺有意思的。好,这里面呢,我就跟大家去说了啊,这样三个问题,第一个呢是区别案例find和这个是在面试中笔试的时候经常碰到。
20:09
啊,另外一个什么时候复制为让这个是大家需要知道的,这是最基本的东西。最后是严格的区,这个大家了解一下就行,所以平常的时候我们不会太注意啊这个事情。好,那这个这三个问题呢,就跟大家说完了啊,我把这个停一停啊。
我来说两句