Java中静态代码块,普通代码块,构造函数详解

来源:互联网 发布:农村金融发展数据分析 编辑:程序博客网 时间:2024/06/11 20:51

//执行的优先顺序:静态代码块>mian方法>构造代码块>构造方法。

其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。

牛客网的一道经典题目:

package go.jacob.day612;public class Demo3 {public static Demo3 d1=new Demo3();{System.out.println("A");}static{System.out.println("B");}public static void main(String[] args) {Demo3 d2=new Demo3();}/* * 运行结果: * A * B * A */}

package go.jacob.day612;public class Demo3 {static{System.out.println("B");}public static Demo3 d1=new Demo3();{System.out.println("A");}public static void main(String[] args) {Demo3 d2=new Demo3();}/* * 运行结果: * B * A * A */}

1 普通代码块

package go.jacob.day612;public class Demo3 {/* * 普通代码块:在方法或语句中出现的{}就称为普通代码块。 * 普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” */public static void main(String[] args) {{int x = 3;System.out.println("1,普通代码块内的变量x=" + x);}int x = 1;System.out.println("主方法内的变量x=" + x);{int y = 7;System.out.println("2,普通代码块内的变量y=" + y);}}/* * 运行结果 * 1,普通代码块内的变量x=3 * 主方法内的变量x=1 * 2,普通代码块内的变量y=7 */}

2.普通构造代码块

package go.jacob.day612;public class Demo3 {/* * 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。 * 构造代码块在创建对象时被调用,每次创建对象都会被调用, * 并且构造代码块的执行次序优先于类构造函数。 */{System.out.println("第一代码块");}public Demo3(){System.out.println("构造方法");}{System.out.println("第二代码块");}public static void main(String[] args) {new Demo3();new Demo3();new Demo3();}/* * 运行结果: * 第一代码块 * 第二代码块 * 构造方法  * 第一代码块 * 第二代码块 * 构造方法  * 第一代码块 * 第二代码块 * 构造方法 */}

3.静态代码块

package go.jacob.day612;public class Demo3 {/* * 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。 * 构造代码块在创建对象时被调用,每次创建对象都会被调用, * 并且构造代码块的执行次序优先于类构造函数。 */{System.out.println("普通构造代码块");}static{System.out.println("静态代码块");}public Demo3(){System.out.println("构造方法");}public static void main(String[] args) {System.out.println("Demo3主方法");new Demo3();new Demo3();}/* * 运行结果: * 静态代码块 * Demo3主方法 * 普通构造代码块 * 构造方法 * 普通构造代码块 * 构造方法 */}


阅读全文
0 0
原创粉丝点击