00:00
好,这个呢,是我们说的这个特性五啊,接着再往后说。呃,下一个呢,叫改进的语法,这个叫TRY语句啊,那么咱们之前呢,去处理一场啊,可以throw,可以try catch finally,呃,像很多时候呢,这个try catch都需要加个finally,因为涉及到资源的关闭了啊,那这里边呢,我们对这个finally这里边做了一些优化,说有些情况下呢,非得要有资源关闭,这个我们就可以在踹里边呢,呃,去进行一个操作了。那下边这个例子呢,实际上是我们这个扎VA8就可以实现的这样的功能,呃,那咱这块呢,先把这个JAVA8,包括之前这个情况呢,先给大家去呃,模拟出来啊,嗯,那咱们这块呢,就先在这边接下边这个接着去写啊,JAVA9里边。哎,这个特性。六哎,关于这个踹它这个操作的一个升级啊。那讲它的话呢,我们先把这个八里边儿这个特点呢,给大家讲一讲,因为八呢这个我们就没有说啊。那那要说八的话呢,咱们还得先说一下八之前怎么做的,八之前的话呢,我们比如说我这呢,去新创建一个叫stream reader啊,我叫reader了,哎,又一个input stream reader,这应该都知道是个转换流是吧?哎在这里边呢,我写个C点音。
01:17
诶相当于我们默认情况下,从控制台呢可以读取数据了,诶读数据这呢,我就来一个差型的一个数组,哎读完这个长度呢,我写成个20在int l enn啊Y号循环LN呢就等于或者这块你就。别整循环了,读一次得了啊嗯,Rin就直接呢,赋值是reader第二啊去reader,哎读到我们这个,诶CB法这个当中,哎判断这个长度这呢,你不写Y了,你得写个E吧,哎如果这个长度哎不等于负一。诶不等于负一的话呢,我们就里边有数据了,哎,咱们造一个string st2等于new一个s string,这呢,我们写成这个叫C80RIN行,这没问题是吧。
02:11
嗯,那最后的话呢,把这个资源呢,关闭一下reader,点掉一个这个close。成这是咱们之间的写法,这呢是因为都有异常,那原来的写法呢,我们需要把这个位置包一下啊,然后out shift z,哎,写一个track finally,然后呢,把我们这个逻辑呢,还得加到finally里边判断一下reader,哎,不等于now。把这个呢,给它扔上去。这么着?这个呢,还有异常out enter一下。TRY开一下,哎,这样子啊,呃,上边啊,我们这个加上一个括号啊。这样可以了啊,拿这个length呢去判断是不是负一行,这个呢我们就写完了啊,写完以后的话呢,我这时候就可以去运行了,在这候你注意一个小点,咱们在idea当中单元测试方法,他不让我从控制台这块去读数据是吧。
03:05
这写的话,这不写不了吗,然后在转,那我就停了这个,你把它改成这个may方法。啊,改成这个may方法啊,啊,下边这个呢,多一个大括号,把这个逻辑从这到这TCTRLX咱们扔进去啊,就放到may里边了,May方法咱们现在同样的去做一个测试。那这呢,我们就写一句话就行啊,比如说你好。哎,陌生人是吧。哎,这块我们回车一下。啊,这里边儿没有输出是吧。输出一下我们这个I tr啊。再来。哎,你好,哎陌生人这样,哎这我们就说出了行这呢,呃,不是让你去看这个里边逻辑了啊,就知道我们以前呢,呃,处理这种资源关闭的时候呢,通常都是放在这个final当中,哎这个你可以理解为是我们这个JAVA8之前的这种版本啊。
04:07
哎,Java。八哎之前的这个资源,哎,关闭的这个操作成,那现在的话呢,我们看一下这个JAVA8里边我们可以怎么进行一个优化啊,说JAVA8当中这个资源的关闭操作,那怎么写呢?这呢我们说就不用非得在finally里去写了,诶我们可以给他去做一个优化处理啊,这个代码呢,我们就暂时就不要了,哎注释掉这呢我们写一个TRY啊TRY呢说后边还可以写一个小括号。没见过。把谁放这里呢?把你这个流放这里边。这呢是留着这个声明,然后就扔到这儿了,然后后边呢,你不是U一下吗?CTRLCL一下。放这儿了。哎,然后呢,具体这里边儿这个reader呢,你想做什么,Reader不是想读数据吗?哎,我们就还这样。
05:03
C。粘过来把这个呢打开。这样子啊,然后这个位置,这个位置的话呢,你看他提示时有异常,我们al enter一下,哎,然后呢,加个catch直接回车,哎,直接就写到这了。行,然后呢,上面这个操作我们就替换成这样写法了。没有见过,我们在这个踹后边呢,有一对小括号,这个小括号里边呢是个流,是一个需要关闭的资源,这个资源首先这个变量可以在这里边去用。啊,就是你仍然就像咱们写个for一样啊,你写for小括号大括号,这里边定义的I这边也可以用这的小括号也是一样,然后的话呢,这个资源在你catch就正常,如果要没有异常,或者你即使你有异常的话呢,我们原来也会执行finally,那它也是一样,这个资源呢,它会自动的进行一个关闭。哎,资源关闭的操作,这不在这写的吗?JAVA8当中可以实现资源的自动关闭。
06:03
就是你把这个资源写到TRY的这一对小括号里就可以了。哎,就是这个原因啊。当然了,你要说不熟,你那女孩就上边老老实实的这样写也行啊,这是我们这个张二八的一个写法,那张二八说完以后啊,当然跑一下是吧,看看这个效果能不能出来啊。那这个呢,哎,你好,哎,这不出来了。没问题,行,那基于这个八以后,我们下边呢说九。说这八还不熟呢是吧,哎,看看这个JAVA9里边啊,JAVA9中。呃,这个资源的诶关闭诶操作啊,看看跟这个八又有什么区别,那我们先看这个八啊八呢,刚才提到说可以自动关闭了,但是要求执行后必须关闭的所有资源必须在我们这个TRY子句当中进行初始化。就是说这呢是一个资源,你想这个让这个资源自动关闭,你把这个资源呢,你写到这个揣的小括号里,同时呢,它的赋值也必须要放在我们这个小括号里边,这是说八的一个要求,那九呢说诶可以不这样做。
07:14
可以放到外面。啊,那我们把这个呢,主持到下边呢,可以这样,你上来呢,你就把这个资源,就是你可以在外边你去造这个资源对象啊。做完以后的话呢,直接踹一个小括号,一个大括号,你直接呢,把这个reader扔到这就可以了。诶扔到这就可以了,然后下边这块呢,还是一样啊CTRLC。这个操作。哎,拿过来啊,这呢有相应的异常out enter一下,哎,我们再写个catch好,这呢就嗯,少一个括号了。嗯,这个没用是吗?看看诶这个重重新整一下吧。
08:04
哎,这块到这块。这个也先删了。这是这个串。少一个这个。没这个这个主函数的这个,呃,这个我们类的这个啊行,然后这里边呢,咱们把这块呢粘过来。CTRLC啊,没问题。把这个呢打开。行,然后这个呢,有一场out enter一下,哎,我们补一下,哎,这样就OK了啊行。那么跟这个八的区别是什么呢?就是我们把这个需要关闭的资源呢,生命在外边了,然后直接在这里边光掉的这个变量。哎,这样的一个写法啊吧,里边不允许吧,里边呢这呢,它的一个说法啊,说咱们这个要求,哎自动呃关闭的这个资源,哎,它的一个初始化。哎,它的一个初始化必须呢,哎这个放在哎,咱们这个踹的这个小括号当中。
09:07
哎,这呢是它的这个点,而这个九呢,就没有这样要求哈,说呢这个呃,需要自动关闭的这个资源啊,这个的实例化,哎是可以哎放在这个踹这一对的小块外的。铁。小包外的啊,就可以放到外边了,这个初始化或者这个初始化不太容易理解,就是叫实例化啊。行,可以这样写,但这个写法你要注意一个事儿,就是这个定义好以后呢,你里边呢只能用啊。里边只能用言爱之呢,就是你不能改。啊,不能改,什么叫改呢?比如说你在里边呢,试图对这个reader呢,你想再附一个值,比如咱们简单点就负可not了,那这块就报错了,说呢,此时呢,我们这是一个final的,哎,不能改的意思不就说是个常量嘛,哎,这要注意这个事儿啊,哎,就是你在外边呢,可以声明啊,当然里边呢,千万不要改啊,这里边我们就相当于提了个点啊此时的哎,这个资源变量啊,是一个常量啊,咱们叫变量了啊。
10:16
啊,就是这个read,或者叫资源这个。属性吧,哎,它是一个常量,哎,声明为final的。哎,压不可修改啊。啊,这个大家注意一下就行,那大家以后呢,如果你要是写L流的时候,那你可以这样去写啊,要是有多个流呢,多个流你看我这里例子啊,这是一个输入流,这是一个输出流啊,你这两个呢,你就都写到里边,中间有个分号隔开就可以了,后边呢,就不用再写finally里去关它们了,因为自动呢,它就会实现关闭。啊,就格式上呢,更加的简洁啊,这呢是我们这个串结构的一个,呃,语法上升级。
我来说两句