00:00
好,那么关于方法的话呢,我们再看第二个点啊,叫可变个数行参的方法。哎,这个打开啊,再读一遍可变个数,请参。啊,这个方法,哎,那反过来说呢,就是方法这个行参呢,它的个数是可变革的。呃,一般呢,我们这个方法行参你是一个呀,两个呀三个呀,这不都确定了吗。怎么会出现可变革呢?是吧,哎,这呢就是一个新特性啊。哎,JDK。诶5.0啊这样的一个新特性啊,这个使用的场景是什么呀?诶我们说呢,呃在这个呃调用方法时是吧,可能会出现。嗯,怎么着呢,就是呃方法行参的。哎,它的类型。是确定的,但是呢,参数的个数不确定。啊,那么此时我们就可以使用哎,叫可变个数行参的方法。
01:04
哎,就这个意思啊,虽然我写完了,但是大家呢,估计也不太明白是吧?哎,那我们首先呢,看下这个格式啊,这个格式呢,首先它是针对于行参的啊,所以这块我们就写小括号里了。哎,这呢叫哎参数类型。然后呢,点儿点儿点儿,哎,这呢,你写一个参数名。曹明,诶,这就可以了啊,就长这样。那咱们先写一个啊。哎,在我们这个零二这里边这个X在这打开啊,就在这儿啊好这呢,我们就去定义这个方法了。哎,Public啊,那我这块叫print吧。好,我这呢,Int类型的点点点,我叫numbers。这呢就叫可变个数的形算的方法。哎,那我要问你这有几个呀。对,那不确定。啊,不确定,哎,那我要是调这个方法的时候看一下啊。
02:02
哎,没方法一进,哎哟。没进来是吧,首先创建当前类的对象。像这呢,这都是套路嘛。哎,然后呢,通过它再去调这个的方法,诶,我们叫可变个数,那到底可变是最少是几个,最多是几个。你发现我已经不报错了。其实。啊。哎,已经不报错了,说明零个就行是吧,哎,所以这块我们就直接呢,就开始说明了哈。第一个点。哎,可变个数的行单的方法,它在调的时候呢,这个哎,你在负这个13的时候啊,13的个数候呢,可能是零个一个两个啊点点点点点啊到呃,可数个是吧,你想付几个都行啊。嗯,可变。哎,个数。行参的方法。在调用时。啊,针对于。哎,可变的这个行参啊,负的13。
03:00
Food。哎,实参的个数可以为啊零个。一个哎或多个啊。哎,这样一个场景。好,那么拉回来啊,这个首先呢,我们去调离普方法说我们要调它,我就想调你这个啊,诶我们一个也没写,你发现的也是OK的,你就先写成四个一了哈,我们去运行一下。诶,发现呢,它确实掉的就是它啊,那我再接着来啊past.print我写个一。这就相当于一个参数。满足你这个int类型啊,哎,这也是他。再去掉写一个一逗号二。啊,这是两个的。还是他。你看还是他啊。哎,首先呢,先明确啊,这呢就叫做可变个数行参的方法了。啊,那么这个完了以后呢,接着来看啊呃,有同学呢,可能会想说,你这呢叫可变个数的,呃,写一个写两个都是它,那在这种情况下,我们能不能再去定一个方法,试图跟他构成重载。
04:09
比如说我就定一个里边我就放一个in形的纸是吧。行不行?既然行,你看。这咱们就打印一下这个叫二吧。哎,那同样的,你看我在public。哎,Word我还叫print啊,I接。哎,我这叫三是吧。你发现呢,竟然可以哈。对这个呢,跟咱们刚才那会讲那个重载呢,有点像是吧,诶那么这个时候呢,你会发现我上面这三个方法呀,在调的时候呢,就不一定都是四个,呃,四个一了啦。这个呢是他。然后这个一的呢。哎,就变成二的了。哎,这个一二呢,就变成333了。
05:01
对,就是先找确定的了。说白了就是我们告诉编译器呢,就是你先找确定的,然后呢,没有了你再找这个,只要没有冲突就行。没有冲突呢,就不会出错是吧,像我们那会儿说的,呃,你这叫in那个I,你再定个方法,这叫in,那接那是真区分不出来呀。所以那样呢,就不行啊。好,那这个呢是允许的哈,诶,所以这块我们可以呢,去呃说一下啊,这写个三。哎,怎么着呢,就是可变个数行参的这个方法。啊,它呢,呃与呃同类中。哎,同一个类中是这个同名的多个方法之间是吧,同多个方法之间啊可以。构成重载是吧。哎,当然这块里边呢,有个特例哈。诶诶,这里写个二了,应该啊。看这是个三啊,当然这也里边呢有一个特例。这个特例是谁?啊沿这就这个特例呢,是不构成重载的啊是它。
06:03
这个我写到这儿吧,离它近一点啊。Public word,我写一个print。我写一个int型的数组。我也叫number是吧。你看这时候呢,就报错了。对这个报错的信息呢,你这块看一下呢,说is already了是吧。哎,说白了,他就认为这两个的方法名一样,行参列表也一样了。哎,他是这样认为的啊。嗯,那认为那显然就不行了,咱先把这个事儿先说一下啊。这个特例呢,就是呃,可变个数行参的方法。哎,他呢,呃,与。同一个类中是吧,方法。哎,名相同。啊,这个且。哎,这个可变写这个可变个数型,参的这个类型也相同的数组。且与是吧。哎,可变个数行参的这个类型。
07:04
有点懵了,看一下啊。呃,它与这个同一个类中方尔鸣相同,且与。嗯,化名相同且。这事怎么说呀,这。嗯。与这个呢,我们整体上就是说,诶不构成重载是吧。嗯,不构成重载,咱们这个一点点去断句啊,哎,不构成重载了,好诶与这个不构成重载,这个是怎么着呢?诶方晓名一样了。啊,与。嗯,这个可变个数行参。A型。呃,相同的。数组参数是吧。有点绕啊。不构成重载。领会精神是吧,哎,就这意思啊好,那么这个拉回来呢,我们去想一下啊,说为什么不行啊,呃,其实啊,我们说呢,这是5.0的新特性嘛。那么在5.0之前,我们也有这样的场景。
08:01
那以前呢,你要是有这种场景的时候呢,你不是也有多个吗。怎么体验多个呀,你就是用数组。哎,对,也就是说以前的话呢,我们其实呢,是5.0之前是没有它的。你要是要有,哎,多个因的型的这个值也不知道几个,那就造个数组,你有几个你就放几个就完了,放在这个数组的元素里边就可以了,指定它的长度是吧,现在5.0有了以后呢,说你就这样用就行,你就不要再这样用了。呃,因为编译器呢,认为他俩呢是一样的啊。所以呢,这个呢就不要用了,不管这个层面一样。不管这个层面一样,大家你看啊,我这样写呢,还能体现它一样,我写个print是吧,我new一个int型的数组。我就写个123,你发现呢,也没有报错。因为他也认为是他。啊,你看也认为是他是吧,哎,那就相当于原来我们这写的数组,你看现在的话呢,我们写的是他就是其实呢,编译以后呢,你就认为他俩就是一回事啊。
09:01
OK,这是一个另外一个啊,我们这里边儿呢,是定义了好几个,那如果我在这个方法里边,我想把这几个呢,都遍历一下。我想看看你这几个变量都是谁,原来的话呢,当然我们很清楚啊,咱就写for循环就行。哎,numbers.lines是吧,这我们就打印一下这个numbers,这个写I,这是不是就成了。现在呢?跟他一样。那你就粘过来就行。那这个呢,不是不能存在了吗。注释一下啊。说白了啊,就是编写的时候呢,看着不一样了,里边呢,调用的时候呢,就当它是一个数组了。哎,你看这块我这样写的,咱们去run一下。你看123不就出来了吗。所以呢,大家你说对他我更清晰点认识,其实你就想象成是个数组就行,只不过呢,比以前省事了,省事到哪了呢?以前你要是掉的话呢,你写个数组你得扭一下,现在呢。
10:00
哎,你只需要呢,把这几个数往这儿放一下就行,New的事儿不用写了。哎,我就知道呢,你就看成是数组的三个元素了。啊,仅此而已啊。你看是不是就同样的。同样的,我们便利了一遍嘛。行啊。好,那这个呢,就是我们说的这样的一个场景啊,那么基于这个场景呢,我们再来说下边的一个问题啊,写一个四。啊四四是什么呢?呃,这里边儿呢,我们有个要求啊,就是如果呢,在一个方法中呢,有这个可变个数的这个行参,这个行参呢,呃,咱们要求他必须声明在这个方法的参数列表的最后。那也就是这样的,哎,这个我们就直接还写到这儿吧,也就这样的场景哈。Public。Avoid,然后呢,Print假设呢,我们一个了是吧。然后呢,我们再点点点,那叫numbers。诶这样写的,这个写法是没问题的啊,但是呢,你把它俩交换一下。
11:01
就不可以。哎,你看。这样是不对的啊。这样的话呢,我们看下这个错误信息。啊,这个呢,就叫做可变行参。就是变量的意思是吧,二呢就是S就是可变的这个参数。哎,它呢,必须是the last。对,在你这个行参的列表当中,必须是最后一个是吧?哎,说的非常的明确哈,哎,就不能这样写。这呢是编译不通过的。啊,然后这个是可以的啊,这个就我们说的啊,如果呢,可变个数的行参在一个方法的行参列表中呢,首先呢,这块呢,如果有多个参数啊,那么这个可变个数的行参必须是这个列表中的最后一个啊。哎,这第四个。可变个数的这个行参,哎,必须声明在啊行参列表的最后。
12:04
哎,最后啊,好,那么要是这个呃出现的话呢,其实我们自然而然的呢,也就会有第五个点。哎,第五点呢,就是我们说诶可变个数的这个形态啊,我们说在一个方法当中,最多就只有一个。对吧,啊,因为你说要有俩的话呢,那一定是有一个前边一个后边的,大家还都得是最后是吧。那就不行了啊。诶,所以回过来。哎,可变个数的这个行参。最多哎,在一个方法的呃,行参列表中。哎,出现一次啊。哎,就这样场景。行,那可能有同学就想说,诶,为什么非得要求是最后一个呢。啊,你可以说是规定,但其实呢,你会想他为什么会要有这样一个规定是吧?嗯,想一下。放前面的话。
13:00
怎么了?那个可能包含后边这个是吧,所以他有时候呢就分不清楚了,你比如说我现在写了一个123。哎,然后呢,我要是这样写的话呢,这个知道一就是他的是吧,二三呢就给了他呗。诶,但是你要说调这个的话呢,假设啊,这个方法还不一定存在,你试图调这个他就整不清楚了啊。联系的话就说。嗯,是一二三都给了他,你这个忘了写了。还是怎么着呢,是吧,哎,他就懵了。诶,所以说这块编译器呢,分辨不出来了。啊,给你提示呢,他也没法给你提示是吧?哎,所以呢,哎,就先把确定的先放前面,不确定的放后边。哎,就这个事儿啊。上面这块还报错呢。啊,上面这个报错,你看这为啥呢。他迷糊了。是吧?他迷糊了。这个对,他不知道我该调哪个了是吧。对,第二这个的话呢,就是就它第二这个就成它了。
14:03
他这个还真是。那怎么办?但是你看我们这个实际,我要把它给注释一下是吧。这俩就没事儿是吧,就是哎,你看我说一下啊,就这两个方法呢,首先啊。是能,你看能同时存在啊。哎,这是编译器的话呢,要判定的话,这不参数,这是算咱算一个参数吧,这算俩是吧,所以这俩呢,编译器是没事的哈,但是我们实际开发的时候呢,一般的你想你这都写了个I,这I就直接写里边不得了吗。啊,所以实际开发我们不会这样写啊嗯,要不的话就是这也懵了嘛,是吧。诶,但其实呢,这个呃,编译器是能分出来他俩的啊,但是只是开发的时候呢,我们不要这样去做了。啊,这一说说的挺细了啊。好,那这儿呢,关于这个可变各数行参的这个事儿呢,咱们就哎说完了,其实不复杂啊,不复杂,可能大家现在还是有点迷糊呢,就是这个翻回来再看。哎,我们在调方法的时候呢,这个形参的类型确定了,但是个数不确定,这这这到底什么时候会有这样的问题呢。
15:04
哎,我稍微的举一个例子啊。这个呢是我们以后呢会讲的。哎,我们在操作数据库的时候呢,咱们呢会写啊,比如说类似于这样的方法,哎,我呢想针对于数据库呢做一个。嗯,做一个修改吧。诶修改的话呢,我们到时候会讲这个SQL语句哈。这个SQL语句的话呢,我们先大体写一个,虽然大家没有接触过,但是呢,这个so呢,其实还挺容易懂的哈。比如我们想去修改。啊修改呢,比如说是一个呃客户表吧,哎,我想设置一下他的这个,呃,比如说名字啊,想改成某一个值。当然这个值改成多少呢,我先不确定,我先用这个问号呢来表示这个呢叫占位符啊,然后呢,我把它这个邮箱呢也改一下。也改一下是吧,呃,然后呢,你想改的是谁呢?哎,我想改的是ID呢,等于这个值的这一条数据。
16:00
啊,以后咱们会讲,你现在就听个热闹就行啊。哎,这呢,就我想修改是这个表把这个和呃,这个把ID是这个数的这个这一条记录呢,它的和呢都改掉,改成是什么呢?先不确定。哎,你把这个色呢往这一写,后边这块呢。就得需要呢,你去把这几个问号给填上了。哎,就得填上了啊,在我们这个问题当中,我有俩问有仨问号是吧,你这就得写三个是吧。当然呢,我们这个方法呢,是提前我都定义好的。给你好的时候,你传的这个SQ,我也不知道你有几个问号呀。你可能俩可能一个他可能没有呢。那这块呢,我们就只能够是写成叫诶呃不债诶,当然这个类型咱们没见过啊。哎,后边讲面向对象,我们提到一个,诶跟服类的时候呢,会提到这个类型,现在你就。不妨你先当成顿也行是吧,哎,这呢,我们就点点点了。哎,OB接S。啊,你这个SQ里边有几个问号,我这个呢,就有几个填充问号的值。
17:03
哎,这不就可变个数了。啊,就这样是吧,其实呢,真正来讲它不是string的哈,它就是这个类型的。诶,那么你在实际调的时候呢,比如我这是一个circle啊,你还可以写其他的circle啊。啊,这我刚才说的啊,你这个个数呢,完全可能是不一样的啊,我就update还是这个表,哎,我就set,我就光想改name。啊是吧,哎,Y2这个ID等于多少,我这不就俩问号吗,是吧。哎,这样是吧,所以你这呢有几个问号,我这块就填几个值,哎就可变了,哎,这就是我们以后见到的一个场景啊,叫场景举例啊。哎,这样呢就可以了。好,这个呢,我们就说完了啊,哎,这个说完之后呢,咱们关于可变个数形态呢,课后一道题,咱们把这道题呢,稍微的写一下啊。哎,稍微的感受一下它的一个举例。啊,这个题目呢,是这样的啊,说N个字符串进行拼接。
18:00
每一个字符串之间使用某个字符呢进行分割。如果没有传输字符串,返回是一个空的。那里边儿呢,会出现这个可变型灿啊。嗯,这个咱们是字符串是吧。它的一个拼接,这个拼接呢,叫做con啊。连接的意思啊,这样吧。这样啊。好,这呢,我们写个方法啊。嗯,传入返回,提到返回的事儿了,那就辞钝了。不妨,我就叫做。看这里边的一个思路哈。嗯,这呢,我会传入N个字符串,也不知道传了几个。哎,这个我们就。这样吧,是吧。然后呢说呢,使用某一个字符串呢,进行一个分割。那分割的你得写到前边了。啊,这个我们就写成叫。啊瑞。我这样啊。然后分割,然后怎么样,就是咱们,诶有的同学可能没太明白这意思啊,是这样的。
19:02
哎,我要吊他的时候呢,我这样子啊。哎,通过这test呢,我调到con了,比如说我这块整个短横线啊,后边那几个叫hello。这让我们比如说再匹配上一个叫word。这样是吧,呃,希望呢,你返回的这个字符串。哎,这个叫info吧。哎,如果呢,我们要去打印这个info呢,呃,希望呢,你是叫hello杠是吧。Word这样。哎,就是你可能有多个啊,用这个呢,给它做一个分割啊分割。那如果你要这块没有写。是吧,哎,就返回一个,也返回个字符串了,但是啥也没有。嗯,这样啊。看看怎么处理。哎,看怎么处理啊,呃这块呢,你看他,呃首先的话呢,提到了我们就是毫无疑问肯定跟他这个要针对这个可变形态呢进行。
20:05
便利了是吧。哎,便利呢,然后怎么办呢,返回的还是个字符串。先把这个字符串咱们先定义出来吧。哎,那我就先定义成这样了。最终呢,反正就是你一顿操作,最终呢,我要返回的就是他。就返回这个结果是吧。好,那么接下来的话呢,你就是。循环便利呗,是吧。嗯,便利呢,这个int一个I等于零,I小于。点单词是吧。艾佳佳啊。好,接着怎么弄呢。嗯,同学们判断它是不是为空啊,你要不不是是不是为空了,它要是不存在的话呢,整个是不是也进不去是吧。对,有同学说,诶,我这块也没写,怎么着呢,一会儿咱们测试一下看看是吧。那如果他要写了,可能写了一个。
21:01
他就写了一个。嗯,这个短航线其实也没用是吧,就出个哈就行了。你要写了俩。诶,拼一下他。哎,其实呢,跟咱们写那个自己定义了一个那个数组的遍历那个方法有点像了。If,你看啊,I相等于零的时候呢?我就直接呢,在你现有的这个result的情况下。哎,加等于你这个。第一个位置上元素就行了。否则的话呢。Result叫加等于逗号,诶不是逗号了。Operator了是吧?是不是他呀。他再加上一下。哎。是不是就可以了。哎,这让我们保险起见加括号。嗯,然后就。没有然后了是吧。对吧。诶,完事了啊好,那这时候呢,我们去做一个。你看这不就。
22:01
出来了是吧,这个你再加一个呢,这个倒都好说哈,我们少一点吧,测试一下这个不同的场景啊。这个呢,还是这个短横线啊,斜线也行啊,这个呢,就写了一个hello。就写个hello啊。然后呢,直接我就打印吧。没问题是吧。好,然后呢,我们现在再演示一个。我就光写一个。啊,导航线没有了。打印这个是不是也应该测一下是吧。转一下。哎,你看这时也没出来是吧,哎就可以啊,诶说明我们这呢是OK的,也就是说呢,当我们这块要不写的话呢,你测试这个点length是没问题的,它直接呢,这个LA呢就是零就没进去。OK,好,那么这道题呢,咱们就做完了,好,那么这样的话呢,我们关于这个可变形参呢,就也做完了,这两个呢,相对来说不是特别难啊,哎,你也别把想的特别难了,那我们再来的时候呢,讲这个直传力这儿呢是一个重点。
23:02
啊,然后这呢算是一个难点啊,我们再往后再去说啊。
我来说两句