Java学习——面向对象(代码块的概述、分类、执行顺序)

Java学习——面向对象(代码块的概述、分类、执行顺序)

概念:在java中用{}括起来的代码被称为代码块
分类:1.局部代码块:在方法中,随着方法的调用而产生,随着方法释放而消失
2.构造代码块:在类中的方法外,每次调用都会执行,在构造方法前执行
3.静态代码块:用static修饰的代码块,在类中的方法外,在类加载时执行,只执行一次
4.同步代码块(多线程讲解,现不做讲解)

下面我们来看一下一个面试题,来深入了解代码块的执行顺序
看程序写结果
	class Student {
	//Student类加载,static代码块执行,且执行一次,所以执行顺序为3
		static {
			System.out.println("Student 静态代码块"); //3
		}
		//构造代码块在Student被new时执行,所以执行顺序为4;在第二次被new时再次执行,所以为6
		{
			System.out.println("Student 构造代码块"); //4 6
		}
		
		public Student() {
		//Student第一次被new时,执行完静态代码块和构造代码块时,紧接着执行构造方法,所以顺序为5;第二次被new时再执行一次,所以顺序为7
			System.out.println("Student 构造方法"); //5 7
		}
	}

	class StudentDemo {
	//当主方法的类加载时,static代码块会执行,且执行一次,所以执行顺序为1
		static {
			System.out.println("StudentDemo的静态代码块");//1
		}
		
		public static void main(String[] args) {
		//主方法加载进栈,打印我是main方法,所以执行顺序为2
			System.out.println("我是main方法");//2
			
			//在第一次newStydent时,Student加载
			Student s1 = new Student();
			Student s2 = new Student();
		}
	}
/*
输出结果:
	StudentDemo的静态代码块
	我是main方法
	Student 静态代码块
	Student 构造代码块
	Student 构造方法
	Student 构造代码块
	Student 构造方法
 */

猜你喜欢

转载自blog.csdn.net/qq_43411550/article/details/89319790
今日推荐