00:00
刚才呢,关于这个代码块的使用呢,咱们就说到这儿了,那么也提到一个情况,就是大家呢,在开发当中可以根据实际情况,你去选择你要不要用啊,整体上来讲的话呢,我们使用代码块的频率呢,不高哎,不高,但是呢,我们既然讲到代码代码块了,也给大家呢说一下,或者举一个例子,我这儿放了一个Java文件,这叫代码框中的一个使用情景,把它打开,打开以后呢,大家会看到这个代码。这个很自然的,你会很崩溃,因为这呢是咱们后边讲数据库连接池的时候的一个技术,我只说其中的这个代码,你不用去关注这个细节啊,不用关注这个细节,大家能看到的就是我在这个类当中呢,这是生命的一个属性,这个属性呢没有赋值,这个属性呢在这个位置赋值了。这个赋值的操作呢,我是放在一个叫静态代码块当中了,换成这个红笔。我放在这个静态代码块中了,然后呢,这是一个静态,这个静态这里边儿呢,还有一个静态的方法。
01:00
其实我们最感兴趣呢,是调这个方法,也就是说这个方法我们用的话呢,是我直接拿着这个类去调这个方法,调这个方法的目的是什么呢?我们想获取一个数据库连接池,这是咱们后边要说的一个连接池,这样一个结构,这个连接池,呃,那就获取一个数据连接池当中的一个连接了,啊,这是那个数据源,或者你叫一个连接池了,我拿到其中的一个连接。就是通过这个方法呢来做的,那这个连接池,咱们那会儿讲单立的应用的时候呢,提过一下说呢没有必要呢,是不是造多个呀,就造一个池子就行了,所以呢,我不可以怎么着呢,我不能说把这些代码,这不就是这个池子吗?这是我把我我这相当于给这个池子负个值,相当于是不是就造了一个连接池啊。我不能把这个代码啊放到这里边。为什么呀?对,那不就跟咱们写那个单立模式一样了,我要是把这个代码呢,扔到这里边,是不是就意味着我每调一次这个方法,它都会执行一次这个操作了,嗯,你不用关注这里边这个类的细节,你只需要关注这个语法就可以了,那我每调一次这个方法,你都给我create一下,那不就相当于是我只是想获取你现有池子里边的一个连接,你要是,诶,我这次用你给我一个,我再掉了,你再给我一个,而不是说呢,我每调一次你造一个池子。
02:27
那这个开销也太大了,所以呢,意味着就这个代码呢,首先不能放到这里边,不能放在这里边,我们就得拿出来,拿出来的话呢,这一行代码你可以考虑说,那我就直接给它显示复泻值得了,你想直接写到这儿,但是你显示复制之前呢,它还有一些其他的操作,或者get下它呀,这样一下啊,Load一下啊,你像这些操作你能直接写成一个属性吗。是不可以的,就有点像这个一样,以前有同学问过这个问题啊,这显然不行,比如说我这,呃,说这个age吧,In一个age,然后下面呢,直接就age,负个值是一。
03:06
说诶怎么报错了。怎么不报错呢?是吧,这肯定会报错呀,就是我们在这个类征中,你声明一个属性,这个事儿呢,咱们原来在方法里边写过,说这是叫声明,这叫赋值,你可以合成一行,你合成写成两行,但是我现在呢,可是属性啊,属性的话呢,要么你就是没有负值,要么你就后边负个值,你这相当于是不是又给它进行操作了。在属性这个位置你不能这么做,当然你更不能说我这个A加等于一个一,这个事儿就更不能考虑了,其实是一样的道理,你不能在这做一些方法的调用等等这样的操作了。那就相当于咱们回过来以后,我这儿呢,想赋个值,你相当于是想写这个事儿,但是这个事儿之前呢,你看我这又又做了好几个别的事儿,这些事儿呢,你又不可能,是不是把它以属性的方式放到那儿啊,我不可能把这几行代码直接CTRLX我粘到这,我放到这儿不行吧,你这不是掉方法了,这从语法上是过不去的,那这时候说了,我我既不能放到这里边儿,我我呢又不能说在这块直接写。
04:15
诶,那这时候呢,说戴马花说我可以。说呢我呢能保证我就掉一次,因为我是个静态的保证呢,我就给你造一个池子,但同时呢,呃,你这个属性你不能掉这个方法的事儿呢,我可以我在ma当中呢,是可以有这种执行语句的。那我们这时候呢,就可以选一个载体,就是叫静态代码块。我把它呢放进去,那么这个时候的执行顺序呢,就是诶先生这个它,然后接下来呢,我一个代码块就帮你把这个为no的这个结构呢,给你去附上值了,在赋值之前呢,还帮你做了一点别的事,这就都给你完成好了,当你去通过类调这个方法的时候,我在方法调用之前呢,静态大板块都已经执行过了,所以呢,就保证你这个是一个非空的了,然后你再去调这个连接,我就给你一个连接。
05:04
这里呢,就体现了我们这个静态代码块的一个价值。能大概听明白吗?啊能,那下来再想一想,当然了,我们也不不是说非得要用它哈,你也有可以别的方式,就是你这边你可以判断一下它是不是no也行,但是我们这儿呢,至少是可以这样来用的,大家呢,体会一下我们这个静态代码块它的一个意义,那这是静态的,因为我们这呢是一个静态的结构,那对应呢,你要是一个非静态的属性呢,你就可以用这个非静态代码块去实施啊,就相当于给大家举了一个代码块在实际开发中使用的一个情境。
我来说两句