黑马程序员技术交流社区

标题: 静态初始化器什么时候执行? [打印本页]

作者: 【灰太狼】    时间: 2013-12-21 18:42
标题: 静态初始化器什么时候执行?
静态初始化器是在什么时候执行?不是创建对象的时候和构造函数一起执行把?
作者: 刘松703    时间: 2013-12-21 18:44
在加载构造函数之前
作者: 【灰太狼】    时间: 2013-12-21 18:46
刘松703 发表于 2013-12-21 18:44
在加载构造函数之前

什么意思,是创建一个对象的时候,先执行静态初始化器,然后在执行构造函数?
作者: 刘松703    时间: 2013-12-21 18:57
加载类时一般实现加载静态变量,公共变量,再加载构造函数的,你可以写代码,在一些地方加上输出语句观察以下其输出顺序
作者: 一年之后    时间: 2013-12-21 19:17
  静态方法是随着类的加载而加载的。优先与对象存入内存中。
作者: panzhenglian    时间: 2013-12-21 20:14
静态函数随着类的加载而加载,优先于构造代码块和构造函数,静态代码块又优先于静态函数
作者: litaojisuanji    时间: 2013-12-21 20:57
静态代码构造器,在类加载的时候,就会执行,并且只会执行一次。
再次创建对象什么的,都不会再执行了。
作者: 弘一    时间: 2013-12-22 08:26
静态修饰后的成员变量和成员方法、静态代码块。都是随着类的加载而加载。
所以当你第一次创建对象时调用了一次类后,就只运行一次。然后再次创建对象
也不会执行,因为静态代码块是属于类的东西,而不是属于对象的
class A
{
        static{
                System.out.println("静态代码块");
        }

        {
                System.out.println("构造代码块");
        }

        public A(){}
}

public class Test
{
        public static void main(String[] args)
        {
                A a = new A();
                A a1 = new A();
        }
}
//运行结果
静态代码块
构造代码块
构造代码块
作者: 75100313    时间: 2013-12-22 08:43
静态代码块   构造代码块   执行该类类构造函数  给变量显示初始化
作者: 卖火柴    时间: 2013-12-22 09:32
静态方法,静态变量,静态初始化器 因为是静态的  所以按照你写的顺序执行

构造函数,属性都是属于实例化的东西,所以比非静态的后执行
作者: 城市儒侠    时间: 2013-12-22 09:53
你说的是静态代码块吧?

静态代码块
随着类的加载而执行。只执行一次。优先于主函数运行。
用于给类进行初始化。
eg:
class Person
{
        static
        {
                静态代码块代码;
        }
}


希望能对你有帮助。


作者: 恩恩    时间: 2013-12-22 11:01
AVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。
先初始化父类的静态代码--->初始化子类的静态代码-->
(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码--->初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2