您的位置:首页 > 编程语言

静态代码初始化详解

2017-12-29 11:31 162 查看
大家都知道在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 的话 会另整个代码“垮掉”。用“垮掉”来说并不为过。因此在用静态方法的时候一定要非常的小心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: