复习笔记-java代码块

/ 笔记 / 无站内评论 / 263浏览
class demo1{
	
	/**
	 * 	局部代码块:局部位置(方法中),用于限定变量的生命周期;
	 *  构造代码块:在类的成员位置(与构造方法同级)  用{}括起来的代码。在构造方法执行之前执行;每实例化一次执行一次
	 *  			作用:可以吧多个构造方法的共同代码放到一起,对对象进行初始化。(构造代码块在构造方法执行之前执行)
	 *  静态代码块:在类中的成员位置,用{}括起来的代码。用static修饰;
	 *  			作用:一般对类进行初始化;
	 *  			不过new多少次,只会执行一次;
	 */
	
	static{
		String s="1:静态代码块";
		System.out.println(s);

	}
	

	{
		String s="1:构造代码块";
		System.out.println(s);
	}

	public demo1(){
		System.out.println("构造方法");
	
	}

	
	
	{
		String s="2:构造代码块";
		System.out.println(s);
	}


	
	static{
		String s="2:静态代码块";
		System.out.println(s);

	}

	public static void main(String[] args){
			
		new demo1();
		new demo1();
		new demo1();
	{
		String s="1:局部代码块";
		System.out.println(s);
	}

		{
			String s="2:局部代码块";
			System.out.println(s);
		}

	

}

}
/*
1:静态代码块
2:静态代码块
1:构造代码块
2:构造代码块
构造方法
1:局部代码块
2:局部代码块
*/

面试题:下面代码执行流程

class demo2{
	
	/**
	 * 	局部代码块:局部位置(方法中),用于限定变量的生命周期;
	 *  构造代码块:在类的成员位置(与构造方法同级)  用{}括起来的代码。在构造方法执行之前执行;每实例化一次执行一次
	 *  			作用:可以吧多个构造方法的共同代码放到一起,对对象进行初始化。(构造代码块在构造方法执行之前执行)
	 *  静态代码块:在类中的成员位置,用{}括起来的代码。用static修饰;
	 *  			作用:一般对类进行初始化;
	 *  			不过new多少次,只会执行一次;
	 */
	
	static{
		String s="1:静态代码块";
		System.out.println(s);

	}
	

	{
		String s="1:构造代码块";
		System.out.println(s);
	}

	public demo2(){
		System.out.println("构造方法");
	
	}

	
	
	{
		String s="2:构造代码块";
		System.out.println(s);
	}


	
	static{
		String s="2:静态代码块";
		System.out.println(s);

	}


}
public class demo3{
	
	static {
			
		System.out.println("demo3:静态代码块1");	
	}

	
	{
		//不会执行 因为此类中没有new
		System.out.println(" demo3 构造代码块1");
	}
	
	
	
	public demo3(){
		//不会执行 因为此类中没有new
		System.out.println("demo3 构造方法");
	}
	
	
	{
		//不会执行 因为此类中没有new
		System.out.println(" demo3 构造代码块2");
	}
	
	static {
		
		System.out.println("demo3:静态代码块2");
	}
	public static void main(String[] args){
		
		new demo2();
	{
		String s="1:局部代码块";
		System.out.println(s);
	}

		{
			String s="2:局部代码块";
			System.out.println(s);
		}
	

}
/*
 demo3:静态代码块1
demo3:静态代码块2
1:静态代码块
2:静态代码块
1:构造代码块
2:构造代码块
构造方法
1:局部代码块
2:局部代码块
*/
}

升级版

abstract class  demo2{

    /**
     * 	局部代码块:局部位置(方法中),用于限定变量的生命周期;
     *  构造代码块:在类的成员位置(与构造方法同级)  用{}括起来的代码。在构造方法执行之前执行;每实例化一次执行一次
     *  			作用:可以吧多个构造方法的共同代码放到一起,对对象进行初始化。(构造代码块在构造方法执行之前执行)
     *  静态代码块:在类中的成员位置,用{}括起来的代码。用static修饰;
     *  			作用:一般对类进行初始化;
     *  			不过new多少次,只会执行一次;
     */

    static{
        String s="父:静态代码块1";
        System.out.println(s);

    }


    {
        String s="父:构造代码块1";
        System.out.println(s);
    }

    public demo2(){
        System.out.println("父:构造方法");

    }



    {
        String s="父:构造代码块2";
        System.out.println(s);
    }



    static{
        String s="父:静态代码块2";
        System.out.println(s);

    }


}
public class demo3 extends demo2{

    static {

        System.out.println("子:静态代码块1");
    }


    {
        System.out.println("子 构造代码块1");
    }



    public demo3(){
        System.out.println("子 构造方法");
    }


    {
        System.out.println("子 构造代码块2");
    }

    static {

        System.out.println("子:静态代码块2");
    }
    public static void main(String[] args) {
        new demo3();
        {
            String s = "子:局部代码块1";
            System.out.println(s);
        }

        {
            String s = "子:局部代码块2";
            System.out.println(s);
        }
    }

    }
结果:
父:静态代码块1
父:静态代码块2
子:静态代码块1
子:静态代码块2
父:构造代码块1
父:构造代码块2
父:构造方法
子 构造代码块1
子 构造代码块2
子 构造方法
子:局部代码块1
子:局部代码块2

总结

执行顺序: main()函数-->父类(基类)中的static域-->main()函数所在类的static域-->基类中的非static域(构造代码块)-->父类的构造方法-->本类中的非static域(构造代码块)-->本类的构造方法-->本类其他代码

召唤蕾姆
琼ICP备18000156号

鄂公网安备 42011502000211号