00:00
那接着呢,我们说一个重点啊,这个重点完了以后呢,大家就可以做一些相关的练习了啊,那这个重点的话呢,就叫方法参数的值传递机制。方法参数的这传递机制,这我放了一个五角星,呃,这其实表示的叫难点的意思啊,当然呢,它其实也是一个重点,嗯,那另外来讲啊,就是这呢,其实也不是说完全新的内容,实际上咱们在昨天写这个程序的过程当中,已经用到了这个知识了。啊,已经用到这个知识上啊,啊所以呢,大家这个昨天咱们开始讲面向对象啊,有的同学呢,会突然一下子感觉这个难度大了,或者说呢,不知道该怎么去写代码上,呃,一方面的原因是因为咱们之前写程序呢,诶,我这块呢,都是在main方法里边去写的啊,所有的东西都放在main里了啊,不管是流程控制还是数字的定义,数值也好,都在这里,突然一下子咱们呢没方法,比如用它之前呢,又造了几个类啊,又造对象,然后在那里边去测试,整体的这种思路上好像不太一样了,有点不太适应。
01:00
啊,这是其一,另外的话呢,这个面向对象咱们讲的时候呢,多多少少可能还会出现这么一点,这个知识呢,还没有给你讲透,咱们就先用了啊,所以你感觉理解上还差点意思,就咱们通过后边这个内容一点点展开,你会呢越来越清楚啊,但是在这个过程当中呢,大家你不能停了练习啊,每天呢,一定要坚持的去写啊,不停的去写,这样的话呢,呃,每天呢都保留下来一些知识,然后呢,呃,面对象讲完的时候呢,有一个全貌就好了。嗯,就是目前呢,大家的状态呢,有点像这个就是这就是一个河一样往里边撒沙子是吧,那你每天呢,这个学的知识呢,就是你抓的这个沙子,你撒完以后呢,这个水就给你冲走了啊,你不能因为冲走了你就不撒了,每天都这样去撒,撒撒,当你持续一段时间以后,这个水流呢,就被你撒的这个沙子呢,就慢慢给你堵住了,就相当于你这个知识呢,目前就沉浸沉淀下来了,而不是说一冲就冲没了啊,就当咱们把这个面对像呢,这几章讲完以后,大家脑子当中形成一个系统的时候啊,这个时候你再学一些知识呢,你也不容易忘了。
02:06
啊,就是这样的一个意思啊,行,那我们来看一下这块主要考察的一个知识点啊,这呢涉及到叫方法的参数,就是我们在给这个形参传值的时候的一个机制的问题,那那讲到这个之前呢,咱们首先呢,先回顾一个已经讲过的一个问题,就是不是在方法参数这块的传递一个情况啊哎,先来写这样的一个例子,我这呢去新建一个,呃,Class。嗯,这个我就还写成。那直传力的一个测试啊。哎,咱们呢,先来看一下,就是普通的一个关于变量的一个赋值情况啊,关于变量的一个,哎赋值,这个赋值啊,不是负值。行,大家看这个呢,咱们讲过了,相当于算是一个复习了啊,但是这个知识点的话呢,呃,是跟咱们讲的方法形单呢是一脉相承的啊,哎,所以我们这个呢,复习有助于理解参数这个情况,首先我们在这个main方法中,我定义一个变量叫M值是十,接着我定一个NN呢,是拿M负过来的。
03:20
行,那此时我们去打印一下M和N的值。哎,这个呢,所有人应该都会这都是失败,哎,没问题啊,在这个后面的话呢,如果我把这个N改成20了。那么我接下来再去打M和N,问此时M是多少?对还是10N的?就20这个应该所有人都清楚吧,对,就是我们把这个操作呢,这叫做赋值操作了,那现在这个负值我拿的是in的举例子,那么对应的其他的基本数据类型的变量啊,整形的。
04:11
浮点型的这两种叉型的,波尔型的是不是大概都是这种情况?哎,是的,我就不一个一个测试了,至少我们现在看到就是对于基本数据类型的变量来讲,我们把这个M呢付给这个N,其实就是把你这个真实存的这个数据给了他了,这个时候呢,咱们内存中实际上这个十是不是有两份啊,哎,对的啊,那咱们这呢,是在没方法中定义的变量啊,没方法也是个方法,方法中定义的变量就是局部变量。啊,那咱们相当于是先声明了一个M,哎,这存的呢,就是十。右边加一个NN呢,是拿你M这个值付过来的,你存什么你就给我什么,你存在就是十,那你就给我十。所以呢,此时呢,其实是有两份十,嗯,然后当我们把这个N呢改成20的时候,M呢没有变啊,所以是合情又合理。
05:10
啊,这是这种情况啊,啊,清楚以后我们接着再变,哎,上面那个呢,咱们是对于这个基本数据类型这个情况的一个说明之后在这写一下啊,这个基本数据类型看这个情况。那下边呢,我们举一个引用数据类型,引用数据类型实际上呢,咱们前面讲数组的时候呢,就说过这个事儿了,咱不是说过数组的那个叫复值与复制啊,当时其实就说过这个问题了啊,本身数组也属于引用类型啊,那我这就不举数组了,咱们讲对象呢,咱就拿对象去举例子,其实一样都是饮用水类型,比如说我在下边呢,声明一个class,我叫order,就是一个普通的类啊,在这个类里边呢,我生明一个int型的叫other ID,这是一个属性好了。
06:10
我呢在下面先去扭一个order角O1,用完以后呢,我这个O1呢,我给它order ID负个值1001。那么接下来我这个呢叫ORDER2,我呢就拿OE去出这个值。这呢,就是咱们也说的这叫赋值了,这个复完以后,首先我去打印一下叫O1啊,这个我都找到了,比如O1的这个好的ID。嗯,行,写一行吧,逗号O2点。成,哎,这样的话呢,我们就把这个O1跟二的奥黛丽就都打印了啊,哎,这个大家应该也都比较清楚,结果呢是。
07:03
是都是1002,对都是啊,哎,你去,哎这边一边咱们写代码,你脑子里边去复现那个内存结构啊,然后接下来我呢,通过o2.o的ID,我改成1002,改完以后我们再去调这个结构,我们更关心的是O1的情况还是1002。这个有不清楚的吧,啊,这个都应该要清楚啊,我们简单画一个内存结构。这是这这是堆,从这个信号下边,首先这块呢是O1,然后用了一个结构,在这有个地址值浮给OE,然后O1呢就指过来,此时呢,这个对空间属性在下边啊看不到了啊叫OID,然后简起来叫ID了,嗯,下面没有负值,那就意味着默认值是零,我们呢,通过对象的方式呢来调一下,调了一下属性改成了1001,好了,到这一行代码搞定,接下来我们有一个O2,前面呢有一个声明说明了这是一个新的变量了。
08:13
O2 o2呢,是拿这个O1复过来的,这时候就得注意了,在咱们Java当中引用类型的变量。引用类型的变量呢,我们说就只有两种值,你不是no就是地理值是吧?哎,那我们现在呢,把O1赋给O2,那负的呢,就看你是啥了,你要是no就负,我现在呢,很显然不是no。我这存了一个地址值,所以呢,我们就把O1的地址值给了O2,那那咱们这O2呢,现在呢,就延迟向它了,这是我们最核心的一个点,这个题目中就意味着呢,这个操作呢,哎,执行完以后,我们O1和O2它两个的地址值相同,指向的是堆空间当中同一个对象实体。
09:01
啊,所以呢,我们通过一个对象去修改这个属性,会导致另外的一个属性的值也改了。哎,这是咱们说的这个叫核心,已经翻来覆去说过几次了啊说赋值以后,嗯,然后然后呢,这个O1和O2对他们两个的。O2的对我们说这个地址值相同,然后呢,都指向了。哎,这个堆空间中啊,这个同一个对象实体。嗯,都指向了对空间中的同一个对象实体导致呢,就是当你通过一个变量名去调这个实体中的属性呢,做了一个修改,另外呢就也改了。好,这呢就是我们总结一下啊,就是下边要说的这个变量的一个赋值,那此时这个变量呢,咱们是拿的叫普通的一个方法类的局部变量来说明的。
10:00
嗯,那这呢,复制的这个算是一个叫规则了,我们怎么去描述啊说如果嗯,我们这个变量呢,是基本数据类型的。基本数据类型啊,如果单量是基本数据类型就像这样一样,那我们此时呢,这个负值呢,就是将你这个变量实际存储的这个数据值传递给了新的变量。啊说此时啊,这个数值的是这个变量啊,所保存的啊这个数据值。哎,这个呢,适用于咱们所说的这个基本数理性变量的任何一个啊,你要不尔行,那你存在就是一个处或者是false,你把这个值给了一个新的变量啊,行,那其他的一些都一样啊,那接下来说,如果变量是饮水类型。
11:00
如果变量呢,是引用数据类型,我们说此时赋值的是变量什么呀。是不是所保存的是不是数据的一个地址值啊,它保存的不是真实的这个数据了。呃,在一位型这个数据呢,其实指的就是对象了啊,或者是你这个数组是吧?哎,你保存的不是真实的这个对象,就像咱们这个站空间中,我们这叫O1O2,不是说你这个new的那个对象啊,这个对象呢,说C到这了,不是这样啊,对象呢在堆里边这呢只是存了一个地址。虽然呢,你存的是个地址,那咱们传递的时候呢,数值的时候呢,就是你这个数据的这个地址值,哎大家呢,哎,就把这个结论就记一下就可以了。啊,记着就行,这就是咱们前面其实已经都见过啊这样的一种情况,这没问题吧,啊没问题啊,这个先停一下。
我来说两句