代码块概述:在java中使用{}括起来的代码被称为代码块
代码块分类:根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块
局部代码块:在方法中出现,限定变量生命周期,极早释放,提高内存利用率
public class daimakuai { public static void main(String[] args) { int x; } System.out.println(x); }
由于即使释放了所以无法打印x的值,会报错,
构造代码块(初始化块):在类中方法外出现,多个构造方法方法中相同的代码存放在一起,每次调用构造都执行,并且在构造方法前执行
public class daimakuai { public static void main(String[] args) { daima s1=new daima(); s1.setage(17); s1.setname("zhang"); System.out.println(s1.getage()+s1.getname()); System.out.println("___________________"); daima s2=new daima("朴",27); s2.speak(); } } class daima{ private int age; private String name; public daima(){ System.out.println("空参构造"); } public void setage(int age) { this.age=age; } public int getage() { return age; } public void setname(String name) { this.name=name; } public String getname() { return name; } public daima(String name,int age) { System.out.println("有参构造"); this.name=name; this.age=age; } { System.out.println("构造代码块"); } public void speak(){ System.out.println(name+age); } }
输出如图:
静态代码块:在类中方法外出现,并加上static修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次,一般用于加载驱动,优先于主方法去执行的。
public class daimakuai { public static void main(String[] args) { daima s1=new daima(); s1.setage(17); s1.setname("zhang"); System.out.println(s1.getage()+s1.getname()); System.out.println("___________________"); daima s2=new daima("朴",27); s2.speak(); } } class daima{ private int age; private String name; public daima(){ System.out.println("空参构造"); } public void setage(int age) { this.age=age; } public int getage() { return age; } public void setname(String name) { this.name=name; } public String getname() { return name; } public daima(String name,int age) { System.out.println("有参构造"); this.name=name; this.age=age; } { System.out.println("构造代码块"); } public void speak(){ System.out.println(name+age); } static{ System.out.println("静态代码块"); } }