Java学习笔记——代码块

前言

代码块这一部分这时候才拿出来写,说实话和我今天实验室做的测试有关,因为实在是做的太差了(指在被罚款的边缘疯狂摩擦),因此我决定花费一点空闲时间来回顾以前学过的知识。
废话不多说,开干!

JAVA学习笔记——代码块有关

代码块的概念

代码块,其实很容易理解,用“{}”括起来的一段代码就被称为代码块,代码块根据位置和声明代码块的关键字的不同,可以被分为普通代码块,静态代码块,构造块以及同步代码块(学多线程的时候会讲到,而现在我还没学到那里) 四种,我认为它的难点就在于代码块的先后运行顺序。所以,我们就先来看看前三种代码块。

普通代码块

普通代码块指的就是直接在方法或是在语句中定义的代码块,例如

public class demo{
	public static void main(String[] args){
		{						//定义一个普通代码块
			int x=30;//定义局部变量
			System.out.println("普通代码块:x="+x);
		}
		int x=10;
		System.out.println("普通代码块之外:x="+x);
	}
}
/*
运行结果为
普通代码块:x=30
普通代码块之外:x=10
*/

构造代码块

构造块顾名思义,既然有构造方法,构造方法是写在类中的,那么构造块也是写在类中的,即构造代码块就是直接写在类中的代码块,例如

class Demo2{	
	{	//构造块
		System.out.println("构造块执行啦!");
	}
	public Demo2(){ //构造方法
		System.out.println("构造方法执行啦!");
	}
}

/*
public class Demo02 {
	public static void main(String[] args) {
		new Demo2();
		new Demo2();
		new Demo2();
		new Demo2();
		//实例化对象四次
	}
}
*/

/*
运行结果:
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
*/

从以上的结果可以看出来,在运行了四次实例化对象之时,可以发现构造块优先于构造方法执行,而且在每一次执行的时候都会执行构造块中的代码。

静态代码块

静态代码块,顾名思义,就是用static关键字修饰的代码块。例如

package demo;

class Demo2{	
	{	//构造块
		System.out.println("构造块执行啦!");
	}
	static { //静态代码块
		System.out.println("静态代码块执行了!");
	}
	public Demo2(){ //构造方法
		System.out.println("构造方法执行啦!");
	}
}


public class Demo02 {
	static{
		System.out.println("主方法所在类中的静态代码块");
	}
	public static void main(String[] args) {
		new Demo2();
		new Demo2();
		new Demo2();
		new Demo2();
	}
}

/*
运行结果:
主方法所在类中的静态代码块
静态代码块执行了!
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
构造块执行啦!
构造方法执行啦!
*/

由上面的程序执行结果可以看出,静态代码块优先于主方法执行,而且在类中的静态代码块优先于构造块构造方法执行,而且无论实例化多少个对象,静态代码块只执行一次

这样的话,在实验室的小测试中的一道题目也就迎刃而解

例题

在这里插入图片描述

从以上我们可以获取到信息,代码1和代码3是普通代码块,代码2和代码6是静态代码块,代码4是构造方法,代码5是方法。
new Block().show创建一个新的对象实例,同时执行show方法,根据我们上面所讲的,先是静态代码块执行,因此先输出“2,6”,然后再是构造代码块执行,输出“1,3”,构造方法执行一次,输出"4",最后再调用show方法,输出"5"
而new Block()再一次实例化对象时,由于静态代码块只执行一次,且没有调用方法,因此输出“1,3,4"
因此最后的结果是“261345134”.
没想到我竟然把static代码块和static方法的的概念记混了

总结

  1. 代码块有四种,分为普通代码块,构造代码块,静态代码块以及同步代码块
  2. 代码块的执行顺序:静态代码块>构造代码块>构造方法

使用教材:Java开发实战经典
祝大家有一个好假期
XD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值