基本介绍
代码块又称为初始化块,属于类中的成员【即是类的一部分,类似于方法,讲逻辑语句封装在方法体中,通过{}包围起来】
和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时或创建对象时隐式调用。
基本语法
[修饰符]{ 代码 }
注意:
- 修饰符可选,要写的话,也只能写static
- 代码块分为两类,使用static修饰符的叫静态代码块没有static修饰的叫普通代码块
- 逻辑语句可以为任何逻辑语句
- ;号可以写上,也可以省略
使用:把一些相同的语句,放入一个代码块中即可,这样当我们不管调用那个构造器,创建对象,都会调用代码块的内容
静态成员变量和静态代码块(static{})只有在类被调用的时候才会初始化。
解释:
- 这里是指在运行时真正被使用到才会被初始化,如果是在编译时被使用到,但在运行时没有使用到也不会被初始化,比如上面的case5。
静态内部类只有当被外部类调用到的时候才会初始化。
解释:
- 这里也是指在运行时,也就是说不在于你在编辑器中有没有写调用的代码,而是你写的这段调用代码运行时是否会被真正执行到。在只使用了外部类,但是没有使用内部类的情况下,内部类里面的东西不会被初始化。
电影案例
看电影案例演示普通代码块作用、static静态代码块作用
/** * @Description: 测试类 测试 DodeBlock 使用 * @auther:Li Ya Hui * @Time:2021年4月22日上午8:20:50 */ public class Test { public static void main(String[] args) { // TODO Auto-generated method stub movie m1 = new movie("你好,李焕英!"); movie m2 = new movie("送你一朵小红花",100); movie m3 = new movie("唐探三",200,"陈思成"); } } class movie { private String filmname;//电影名 private int price; //票单价 private String driector;//导演 {//一些必须的代码块,相同的代码块 System.out.println("..................................................................."); System.out.println("电影开始了..."); System.out.println("广告开始了..."); } //优先级最高 static{ System.out.println(); System.out.println("河北软件豪华电影MAX厅"); System.out.println(); } //只构造电影名 public movie(String filmname) { this.filmname=filmname; System.out.println(filmname+"电影正式开始!"); } //构造电影名,票单价 public movie(String filmname, int price) { this.filmname = filmname; this.price = price; System.out.println(filmname+"电影正式开始!"); } //构造电影名,票单价,导演 public movie(String filmname, int price, String driector) { this.filmname = filmname; this.price = price; this.driector = driector; System.out.println(filmname+"电影正式开始!"); } }