Java的四种代码块
Java的4种代码块
原以为自己的Java基础还不错,看来,好记性不如烂笔头啊,被一道简单的面试题难住了,面壁去。
面试题在这里:http://www.iteye.com/topic/1115830
一、普通代码块
直接在一个方法中出现的{}就称为普通代码块,例子程序如下:
public class CodeDemo01{ public static void main(String[] args){ //普通代码块 { int x = 10; System.out.println("x=" + x); } int x = 100; System.out.println("x=" + x); } }
在普通代码块中定义的变量只在块中起作用,执行结果如下:
x=10
x=100
x=100
二、构造代码块
直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:
public class CodeDemo02{ public CodeDemo02(){ System.out.println("========这是构造方法========="); } //这是构造代码块,而且在new对象时,构造代码块优先构造方法执行 { System.out.println("=========这是构造块!========="); } public static void main(String[] args){ new CodeDemo02(); new CodeDemo02(); } }
三、静态代码块
使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,例子程序如下:
public class CodeDemo03 { static{ System.out.println("这是主类中的静态代码块!"); } public static void main(String[] args){ new Demo(); new Demo(); new Demo(); } } class Demo { static{ System.out.println("这是Demo类中的静态代码块!"); } { System.out.println("这是Demo类中的构造块!"); } public Demo(){ System.out.println("这是构造方法!"); } }
静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!
四、同步代码块
同步代码块主要出现在多线程中。
public class Child { static Object o; static { o = new Object(); } public void doto() { synchronized (o) { } } }