00:00
咱们再继续往下看吧,啊完了,有同学说是这个实例方法这块没有太听明白,呃。咱们这样,我觉得这样,同学们啊,咱们这个this这一块说完咱们再回过头来再继续分析行不行,那行啊,咱们还是继续看这个static,各位把static咱们这个关键字彻底学完之后,我们再继续往下好吧。Static啊,TEST06,别着急啊,同学别着急,继续往下,然后我们这块呢,看一看啊,还可以用来干什么零六。使用什么呢?使用这个static static关键字可以定义什么呀,静态代码块啊。
01:00
静态代码。使用static关键字可以定义静态代码块。什么叫静态?什么是静态代码块呢?什么是静态代码块?语法是什么?是这样的static大括弧啊,这里跟什么Java语句啊,然后跟Java语句哎,那斯sta静态代码块在什么时候执行呢。哎,我给大家一个答案啊,叫类加载时执行并且只执行一次,静态代码块有这样的特征或者是特点,在类加载时执行,并且只执行一次。啊来,我们简单的看一个东西啊,比如说我们在这里写一个静态代码块啊,静态代码块static大括号,然后system.out line打印输出,输出一个A吧。
02:07
啊,然后呢,我们能不能写多个呀,一个类当中可以编写多个静态代码块。没问题啊sta,然后system点点out.print打印输出什么呀B。对吧,哎,我再来一个,比如说呢,现在呢,我把这个静态代码块啊,这是程序的入口,各位啊,这程序的入口,然后接下来我在这儿呢,哎,也编写一个什么呀,静态代码框sta啊,然后system.out.line打印输入什么呀,哎C。那么接下来我在main方法当中啊,我输出一个hello word,大家注意看,输出一个hello word好了,那么接下来呢,我们在这里啊,去编译一下,并且去运行啊,我们看什么样的Java c呢?编译static test06.java。
03:10
编译通过之后Java去运行static test06走好,大家看输出结果是ABC,然后hello word是不是?是不是这个最后这个程序的一个输出结果是这样的,是ABC,然后hello word,这说明静态代码块是不是在main方法执行之前执行。注意啊,我们经过测试得出个结论,Hello word是最后输出的,所以呢,这里要注意一件事,什么事呢?就是说静态代码块在类加载时执行,并且在main方法执行之前执行。静态代码块啊,还有一个特点,它输出的是A,再输出B,再输出C,这说明静态代码块可以自上而下的顺序执行是吧,按照这个执行的啊,静态代码块一般一般是按照什么呀,按照。
04:08
自上而下的顺序执行啊,建代报告一般是按照自上而下的顺序执行,先执行这个,再执行这个,再执行这个啊,然后再执行本方法,然后再执行本方法,注意啊,静态代码块在类加载时执行,并且只执行一次。啊,而且他在闷方法之前执行一个类当中还可以写多个,并且它的执行顺序是从上往下执行啊,那么现在问题来了,各位最后一个东西啊,问大家静态代码块有啥作用。有什么用对吧,哎,学这个东西有什么用。大家思考一下啊,咱们沟通一下。
05:01
呃,你觉得这个静态代码块这种这种语法,我就写这么一个例子啊,基本上静态代码代码块也就讲完了,那么这个它有什么用啊,你觉得。这进的代码块有什么用啊。优先级,那跟优先级没有关系。有啥用啊,讲这个东西讲了半天啊,静态代码块很好用啊,带的一个关键字加一个大括弧就行了,里边写点代码类,加载的时候执行,并且只执行一次。默念啊类加载时执行,并且只执行一次。类加载式执行,并且只执行一次,自上而下的顺序,执行123,再执行它。是不是在方法之前执行?静态代码块只执行一次,并且在类静态执行初始化程序。统一赋值类加载前做一些前期准备,哎,对啊,给个初始化提示,嗯嗯,优先级。
06:02
是这样的各位啊,我来说一下。实际上静态代码块啊,这个东西啊,它。不常用啊,不常用,首先第一啊,静态代码块。不是那么常用。啊,不是填,不是说每个代码都要写啊,不是每一个类当中都要写的东西,首先先确定这一点,第二啊,我们这个静态代码块这一块啊。他实际上是我们Java语言的开发者,就是散公司的那帮人,给咱们Java成员准备的一个什么呀时机。注意啊,就是静态代码块这一种语法机制,实际上啊,是散公司给谁啊,给我们Java程序员的。一个特殊的时刻,或者叫时机。
07:06
这个时机叫做什么呀,叫做类加载时机。类加载试剂啊,你比如说啊,具体的业务啊,具体的业务项目经理说了,项目经理说了说什么呀,说呃,大家注意了啊,大家注意了,所有我们编写的程序中。啊,所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息。就只要是类加载了,请记录一下类加载的日志信息,就是在哪年哪月哪日,几时几分几秒在哪年。在哪年哪月,哪月哪日。
08:00
啊,在哪年哪月哪日,几时几分几秒。啊,哪个类加载到JVM当中了,可能要把这个事儿记一下,那么大家思考一个问题,记录日志的代码写到哪?思考一下这些记录日志的代码啊,写到哪呀?就可以写到哪儿啊,各位写到静态代码块当中。啊,你就可以尝试给他写到静态代码块里边。啊,所以呢,我想说的是啊,这个静态代码块啊,它这个实际上它就是我们散公司为我们加码程序员量身定制的一个特殊的时间点,如果你以后开发过程当中,在这个时间点上,就想在这个类加载的时间点上想做点事的话,你这段代码有地方放就放到哪啊,哎,就放到这个静态代码框当中。
09:05
但是呢,这个静态代码块用的不是很多,不是说你以后每个类都要写,就看你具体的业务,将来你具体开发有没有遇到这样的需求,有没有遇到这样的一个要求,是不是人家项目经理都说了,说那个咱们这个程序里边啊,所有的类啊,在这个类加载的时候,你都把日志信息给我记一下。什么意思,就是说你把这个类哪年哪月哪日,几时几分几秒装载到Java虚拟机里边,每个类可能都要记一下这个日志,那你记日志,记日志,记日志志需不需要一段Java代码,需要对吧?哎,那你这个这一段Java代码。写到哪呀?你难道把这段加法代码写到main方法里边,你难道在main方法当中记录日志不行不行,为啥呀?因为这个main方法调用它是一个方法,每调一次是不是都记一次,每调一次是不是都记一次啊。
10:00
我们是不是只需要在类加载的时候记一次啊?是不是,哎,所以说有同学说老师我可以把这个记录日志的信息写到构造方法里边,好,能不能往构造方法里面放,不行,为什么?因为你每new一次对象这个日志是不是就记一次,每new一次就记一次,对吧?所以说我们要的不是这种效果,我们要的是类加载的时候记录日志,那你这个记录日志的代码就可以写到静态代码框当中啊在这里呢,主要是给大家说一下这个事儿啊,说一下这个事儿,这个静态代码块啊。就是S公司为我们程序员准备的一个特殊的时机,哎,这个特殊的时刻呢,其实就是一个类加载时刻。啊,通常也不会说在一个类里边写多个静态代码块啊各位。啊,不会写多个静态代码块。啊,一般呢是呃,就写一个,一般就写一个啊,反正以我之前的这个开发经验来看啊,就一般一个类,有的时候如果写的话,也就写一个静态代码块,你可能会在这个静态代码块里边干什么呀?啊就像啊伟斌说的,在类加载前做一些准备工作,是不是你有可能会做一些准备,有可能也也也会做一些初始化的操作,是不是啊,你看林森说的初始化程序,这都都有道理啊,都有道理,那具体说你这个静态代码块这个。
11:18
大框里边写什么,那要看你具体的业务是什么,你具体的项目开发需求是什么样的啊,你万一需要用到这个时间点,你需要在这个时间点上干点活,哎,你总这个代码总得有地方放吧,放哪呀?哎,放到这个静态代码框里边啊,所以说呢,你没有它呀,还不行,对你得有它啊,因为有的确实是在我们类加载的时候需要做一些事情,尤其啊刚才所说的初始化操作以后你可能就遇到了啊,希望吧各位以后啊在开发的过程当中能够想起来,嗯,杜老师曾经在某一个时间点上讲过一个知识点叫什么呀?叫静态代码块,而这个静态代码块的执行时间呢,是在哪啊?在类加载时执行,并且只执行一次,你只要把这个给我记住了,如果有一天突然之间你遇到一个业务说是啊,诶希望在类加载的时候干点事儿啊,哎,这个事儿啊,哎是一段代码,你能把这段代码啊写到这个静态代码框里边,诶这就表示你静态代码框啊,诶掌握了啊掌握了,总之啊,这就是一个特殊的时机。
12:18
啊,特殊的时机,什么时机。类加载时机啊,类加载时机,希望在类加载时时机类加载时机执行一段代码的话,你就可以把这个代码写到静态代码框当中,做到代码叫做有的放矢啊,有的放矢就是代码有地方放呗,是不是啊,就这意思。
我来说两句