00:01
现在咱们开始上课啊,同学们。嗯,咱们今天的最主要讲的什么内容啊,还记得吗?过了一个中午,还记得咱们今天上午讲的什么吗?咱们今天上午讲的主要是一个方法对不对,哎方法,那么方法这个东西呢,它实际上呢,在C语言或者C加加当中啊,它是一个什么呀。哎,函数是不是,哎一个方法呢,其实就是一段可以被什么重复利用的什么代码片段,然后呢,这个代码片段怎么着啊。哎,他是为了完成某个特定的功能,是不是,哎,所以今天上午呢,咱们讲讲解了一下这个方法的一个定义,以及方法应该怎么去调用啊,啊那么这个过程当中呢,我们其实也讲了很多零碎的一些知识点啊,零碎的知识点。那这块呢,大家呢,呃怎么说呀,这个方法这一块啊,呃定义呢,大家应该是没什么太大问题,但是呢,真正在实际的开发过程当中啊,你可能比较难以难以做的一件事,就是说,诶我我我这个地方应不应该定义一个方法,你可能这会儿还不知道。
01:04
对吧,或者说我定义这个方法的时候,哎,这个方法起一个什么样的名字呀,哎,这个方法的反馈是类型,我定义成什么呀,关于这个方法的形式,参数列表,我定义成什么样的参数比较合理呢?对不对?诶这个可能有待于大家以后啊,在做项目的过程当中啊,不断去提升啊,这个需要一个过程,不是说我讲一讲方法啊,你就理解这个方法啊,完全就是说知道这个方法该该怎么定义,该怎么抽取啊,其实比较困难一些啊,方法的定义以及方法的抽取其实是需要经验的啊,需要经验的。那行,那咱们还是简单的做一个回顾啊,回顾呢,我就以这个。以什么方式回顾呢?我以写的这个程序啊,啊,以这个为方式,咱们来。来回顾一下好吧。那么这块都写了什么呢?123456是吧,六个对不对?哎,那么这六个呢,在这儿呢,应该是都有的啊,这是第一个。
02:00
那么第一个程序呢,最主要的目的是呢,告诉大家我们这个程序啊这块啊,呃,有一个什么呢?如果说哎,你不定义方法对不对啊,你去写,你硬硬写这堆代码再来一次对吧,再来一次那行不行,这个效果也是可以啊,你呢也能运算出结果,但是呢,这个可能啊,啊不是特别好啊,因为这个代码没有得到重复使用,明显的需求1233个需求是一样,只不过每一次求和的时候,参与求和的数据啊不一样。啊,参与求和的数据不一样啊,那么为了让我们代码得到一个复用,所以呢,在第二个例子当中啊,我就给大家呢,加了一个东西叫什么呀,叫做方法。但是在这里呢,我只是把方法定义出来,让大家感受感受方法有什么好处,在这里我并没有讲这个方法怎么去用,对不对,并没有讲方法怎么去用。啊,只是呢,给大家说了一下我们这个啊方法有什么好处,本质是什么,对不对?哎,那么它的本质是什么呀,方法它的本质其实就是一段可以被重复利用的代码片段,而这一个代码片段可以完成某个什么特定的功能而存在的,对不对?哎,它是抽取出来的,那么紧接着第三个例子呢,我们就直接切入重点呢,那么为什么说这个是个重点呢,我在这里呢,在。
03:19
嗯,重点的原因是因为这里啊啊,就开始给大家讲方法怎么去定义啊,讲完这个方法怎么定义之后呢,再往下呢,我们讲了一个方法应该怎么去调用是不是,哎,那么方法这一块呢,定义啊,它是一个这样的一个语法结构。首先呢,是一个什么呀,叫做修饰符什么,哎,列表,然后这块呢,我用一个中括号给它括起来,那表示这是个可选项,不是必须的啊,不是必须的,那么修饰列表这块啊,呃,目前为止大家写什么就行呢?写一个这个啊,叫做public就可以了啊,Public sta就可以了。嗯。
04:03
好,然后呢,我们在public sta后面呢,会有一个什么呀,叫做返回值类型是不是哎返回值类型,那么这个返回值类型的理解怎么去理解,我在这里再强调一下啊,这个返回值类型啊,其实哎,其实就是你需要在这里去指定一下,你这个方法执行结束之后的那个返回的那个结果,它的一个什么数据类型,需要在这个位置指定一下,那么首先你要理解返回类型之前呢,你先得去理解一下什么是返回值。对不对,那返回值其实是什么呢?就是你你一个功能结束之后啊,它会有一个什么呀?啊会有一个。返回的一个结果,而这个结果呢,其实是一个数据,数据呢其实就是一个值,对不对?嗯,那既然是数据,那每个数据都应该有类型,所以在这个位置需要指定一下返回值的类型啊,那么在这块咱们呢,其实花费的时间比较长一些啊,我不知道大家还能记得多少啊,返回值类型,首先第一个问题,我们返回值类型可以是哪些类型啊?
05:02
可以是哪些类型啊?哎,可以是Java语言当中任何一种数据类型对不对,基本数据类型和引用数据类型,那如果你这个方法执行结束之后,要是不返回任何结果的话,你返回值类型这块也不能怎么着啊,空的对吧,你得写什么?哎,Voidd VO是不是?哎,那换句话说,如果你的返回类型是Y的,就表示你这个方法执行结束之后怎么着啊,哎,不返回任何结果啊,不返回任何结果。那再反过来,如果你这个地方不是VO,不是那个VO的那个单词,那比如说你是,那么这个时候要求你这个方法执行结束之后啊,必须得有一个什么呀,哎,必须得有一个返回值,必须得有个返回值,如果不返回值啊,那么编译器就会报错啊,也就是说你这块你必须得有个什么呀,哎return值这样的哎语句,如果你没有这样的语句,那编译题就怎么着啊,就报错了啊就报错了。
06:00
当然如果说你这个位置写的是Y的,那妥了,如果你要返回这个值的话,对不起,那就编译记也会报错,所以总之这块的话,你呢啊,给它好好的理解一下,我觉得不要去死记硬背啊,你给他讲道理嘛,是不是?哎,讲道理啊,讲讲道理,你明明说你指定了反馈值类型,你却在最后没有给人家返回值,那你不是说话不算数吗?对不对?哎,你明明说你这个地方不返回值VO,哎,结果你偏偏在最后的时候把值给人返回了,那你还是有矛盾啊是不是?所以像这种情况,你不要去死记硬背啊,你去给他讲道理啊,讲道理你这个东西你还是可以去理解的啊,还是可以去理解的,那么这个return语句呢,大家要注意,一旦执行之后,整个这个所在的方法呀,这个方法就结束了啊,这个方法结束了,这是啊,我所说的一个一个知识点啊,一个知识点。那如果说你这个返回值类型啊是死的话,那么将来你在返回值的时候,这个值你可就不能随便写了,你这个值啊,也必须得是个什么,哎死类型对不对,哎死准类型才可以啊死砖类型。
07:04
嗯,这块得是个死钝类型啊,你不能返回一个什么呀,Int是不是,哎你返回INT100,那你这个,哎199是不是,哎你这块就还是那句话叫什么呀,不一致啊,言行不一致啊,言行不一致,好这个位置的反馈类型我就说到这儿,各位啊。当然如果说你是VO的,你就可以写return,这是可以的,你写这个return是啥意思啊,这个return的语句的出现主要是为了把这个方法的执行给它终止掉,对不对?哎,终止掉是可以的啊,那么方法名这块的话,我曾经说了叫建明之意,你看到这个方法名就知道啊,这个方法用来求和的,这这这个方法用该干什么干什么,诶这个方法名啊,要起得生动一些啊,生动一些啊,你查英语单词,呃,查这个英语字典也好,或者说你从百度里边搜也好,总之呢,你用汉语拼音也行,总之你这个方法名要生动一些啊,形式参数列表其实就是什么呀,局部变量,当时说的形式参数列表的个数是零个或者说是多个啊,如果是没有行不行,可以有一个行吗?也可以有多个的话,我们参数中间有什么呀?逗号给它隔开就行了啊,逗号隔开,然后大括号当中的这是什呢?这是方法体啊,方法体有Java语句构成啊,加va语句构成,另外我说了行参其实就相当于是局部变量啊,方法结束内存就。
08:22
释放掉了啊,内存就释放掉了。好了,那么这是一个方法的一个理解啊,它的基础语法理解,那么在这块呢,我还讲了一下方法定义完之后,我们怎么去调用,对不对,哎,它的语法格式是这样的,最前面的是一个类的名字,对不对,然后再加个点,然后后面紧接着加一个什么方法的名字,然后跟上小括弧里边一个什么呀,叫做实际参数什么,哎,列表实际参数列表啊。那么食参和行参的类型必须一一对应,就是你将来你在这里定义了一个方法,这个方法上面有什么呀,形式参数里边对不对?哎,你当将来在调用这个方法的传进去的这个东西叫做实际参数列边实参和行参一一对应的意思里边个数时必须一一对应,另外数据类型还得一一对应啊,比如说我们这一块是int类型,那你就得传过来,Int类型有同学老师BY类型能不能传过来可以啊,因为存在什么呀,自动类型转换啊,自动类型转换好,如果你前面这个叫做基本数据类型转换,那个六条规则背会的话,我觉得这些东西都不是事儿啊,都不是事,应该是没什么太大问题啊,没什么太大问题。
09:28
那么我们讲这个方法调用的时候,大家还记不记得我们什么时候类名点可以省略呢?就是这个类名点可以省略,还记得吧。哎,我们紧接着在下边怎么着啊,哎尝试怎么着,我们写了一个类,然后再往下呢,又写了一个类,是不是哎又写了一个类,那么我们写完这个类,写完这个类之后呢,我们在这个类的闷方法当中。是不是,哎,我们去调用我们另外一个类当中的某一个方法,那么应该怎么做呢?我们这必须得加上类名点了,是不是,哎类名点,如果说你把这个类名点去掉的话,怎么着啊,就相当于是调我们本类当中的啊,诶这个方法啊,这个方法,所以这块呢,呃,应该是要注意一下啊,这个类名点啊,呃,有的时候能省,有的时候呢,它不能省略,你要看啊,你要看,那么再往下一个例子,主要说的是什么呢?说的是我们这个方法执行的一个顺序啊,另外呢,大家要打破一个观念,什么观念呢?就是别老想着啊杜老师上课的时候啊,老在闷方法里边干啥呀,去调别的方法。
10:27
是不是啊,那如果说是我们方法调你别的方法,你这个别的方法能不能再去这个方法里边去调别的方法呢?我主要是想跟大家聊一聊这个啊,聊一聊这个东西。啊,你不要老老老以为说,诶杜老师以前都在闷房里边调啊,哎,我在闷里边掉谁下掉M1,我在闷里边掉谁下掉M2,我在闷里边去掉谁下去调这个M3,其实如果你要是这样去理解的话,我觉得就呃就错误了,大家呢不要把方法特殊化,方法它只是一个方法,我定义的M1方法它也是一个方法,只不过他是一个幸运儿,为什么是个幸运儿被公司看中了,对不对,哎这个va程序的入口就长这个样子,就长这个德行,只不过他呢是一个佼佼者是不是,哎但是呢,他呢,哎和他呢是平等关系啊,平等关系,平等关系,不要把它特例化,他也是一个方法是不是,哎,他也是一个什么呀,哎,方法。
11:19
啊啊,那可以调用闷方法可以啊,没问题啊,哎,你说你闷方法在这里可以开始执行是不是,然后在M1M里面干啥,你去调这个闷方法,哎,你可以啊,没问题啊哎,那你调闷话,这个这个这个这个就会出问题了啊,就会出问题了,因为你M1里边执行又去调谁啊哎哎,M1M1执行调谁啊调那这个时候程序没有执行结束的时候,到时候这个占的内存就溢出了啊就溢出了,最后呢,程序就崩溃了啊,就封了。对,就疯了啊疯了。那么在这个例子当中呢,我主要呢,是给大家说了一下方法的一个执行顺序,我不知道大家这个有没有理解啊,有没有理解,那么这块的话,我们的输出这个顺序大家理解吗?就是这个地方我们输出了这样一个顺序,先什么再什么,先什么再什么再什么,其实我觉得你不要搞得说啊,这个东西我不理解,其实你记住一句话就行,我当时怎么说的对吧?哎,万变不离其宗,啥意思啊,自上而下的顺序,你就是分析的时候,你就分析一个程序啊,它是从上往下依次一行一行往下执行的,就是你这一行执行不结束,我下边这行永远都执行不了,你只要能把握好这个节奏,我觉得你能分析出来程序的执行顺序啊,是没有任何问题的啊,没有任何问题的。
12:31
好了,那么最后一个例子,我们最主要讲的是break语句和return语句的一个区别啊,这个break语句啊和return语句您就别再放一块了啊,它俩根本不是一个级别的,Break是咔嚓一下把for循环结束掉,后续程序可以继续执行,你return呢,出现在这个反馈类型是VO的方法当中,你return语句语执型是说直接这个方法就over了啊,这个方法就结束了,那就相当于return执行的时候再往下,这个就执行不了了啊,执行不了了就程序就结束了啊,程序就结束了啊,是这样的。
13:01
行了,这是我们今天算是我们上午所讲的这个所有内容,对吧,哎,所有内容。
我来说两句