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 构造方法
 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值