静态代码初始化详解

大家都知道在JavaSE 中程序的run 都是在JVM中进行的,刨除反射,几乎所有的方法的执行都需要new 一下

也就是new 一个对象。“你有对象吗?new 一个啊”。

new 的过程就是在堆中开辟出一个空间。也就是初始化的过程。

非静态成员的初始化这里就不提了,这里说的是静态变量的初始化的过程。

static关键字大家都不陌生,最熟悉的莫过于static main方法了。被static修饰的静态数据,无论创建多少个对象,都分配一块储存区域。同时static不能作用于局部变量,只能作用于域中。

如果一个域是静态的基本类型域,并且没有对他进行初始化,那么就会获得基本类型的标准初始值,int =0 ,Boolean = false  而object类型的则是null 等等。

通过大家的日常不难发现静态对象只在需要的时候初始化,而且只会被初始化一次。而且初始化的顺序是先静态后非静态的。下面通过代码来看一下显示的静态初始化的过程。

public class StaticDemo {
	
	
	public static void main(String[] args) {
      
		Cups.a.hello();        //或者注掉
		
	}
	static Cups cu = new Cups();    //或者注掉

}

class Cup
{
public Cup(int a) 
{
	System.out.println("Cup"+a);
	
}	
void hello ()
{
	System.out.println("hello world");
}

}

class Cups 
{
	static Cup a ;
	static Cup b ;
	static
	{
		a = new Cup(10);
		b = new Cup(30);
	}
		
}
通过这个代码运行发现,我们不论是new 一下还是调用静态方法都会对Cups 这个类中的a , b进行一次初始化。同样的我们不论new 几次,静态化动作都只执行一次。

我们不可否认 的是:静态方法 和静态变量不论在哪里 用起来都是非常的快,非常的方便。但是一个代码中如果出现大量的static 的话 会另整个代码“垮掉”。用“垮掉”来说并不为过。因此在用静态方法的时候一定要非常的小心。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值