静态代码块、构造代码块、局部代码块(java)

代码块:就是用{}括起来的有一定特殊作用的代码
首先看如下的一段代码:

class Baby
{
	int age;
	String name;

   //下面这段代码是构造代码块
	{
		System.out.println("哇哇地哭");  
		age = 0;
	}

   //下面这段代码是静态代码块
	static
	{
		System.out.println("妈妈");
	}

   Baby()
	{}
	Baby(String name)
	{
		this.name = name;
	}
}
class StaticDemo 
{
	public static void main(String[] args) 
	{
		Baby p1 = new Baby();
		Baby p2 = new Baby("旺财");

   //下面这段代码是局部代码块
		{
			int i = 0;
			i++;
		}
		int i = -1;
		System.out.println(i);
	}
}

其运行结果如图:在这里插入图片描述
构造代码块:它作用就是对类的对象进行初始化。不同于构造函数,构造代码块用于初始化该类对象的共性的东西,比如上面的一段代码。我们对刚出生的婴儿定义一个类。这些婴儿有共性的东西:刚出生都会哇哇的哭,刚出生年龄都是0岁。这段代码如果放到构造函数中初始化,就需要在重载的每个构造函数中都写上这样重复的代码。所以为了提高代码复用性,和简洁性。只需在构造代码块中一次性初始化即可。每new一个新对象时,都会运行构造代码块中的内容。
而构造函数用于初始化该类对象个性化的东西,比如婴儿的名字。不是每个婴儿刚出生都有名字的,而且有名字的也不相同。那对于名字的初始化就要用构造函数了

静态代码块:它用于对类进行初始化。当类在内存中加载时,就会运行。在java中,类加载在内存的方法区中,且用到该类时,才会加载到内存的方法区中,直到程序结束才释放。所以静态代码块只执行一次(即类加载到内存时),和定义几次对象没有关系,它是属于一个类的。而静态代码块是最先运行的,如上的一段代码中,与代码顺序无关,静态代码块执行顺序先于构造代码块。原因很简单,静态代码块在类加载到内存时就运行了,而构造代码块在实例化对象时才运行。

局部代码块:它主要用于对变量的生命周期进行控制。局部代码块里的变量只在{}里有效,出了括号,里面的变量就已经在内存空间中释放了。在现实开发中,一个项目很大,有些变量只需要用一下,那就可以用局部代码块控制它的生命周期,这样既减少了内存空间的占用,又可以随时重复的使用该变量名。比如for循环中定义的变量i,for循环结束后,它随即释放。后面循环依旧可以用i作为自增变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值