黑马程序员技术交流社区

标题: 关于对象初始化过程的问题! [打印本页]

作者: iFmmer    时间: 2015-6-24 11:55
标题: 关于对象初始化过程的问题!

这里老师给出的对象初始化顺序是先执行静态代码块,后对静态成员变量进行赋值。
但是老师还讲过“静态代码块就是给静态成员变量赋值的”。
这不是前后矛盾了吗?
编程验证结果也是先进行赋值操作后运行静态代码块,请问到底什么才是对的啊。



作者: iFmmer    时间: 2015-6-24 16:03
求解啊,是老师的失误还是我理解错了?
作者: liu100chao    时间: 2015-6-24 18:09
静态代码块就是给静态成员变量赋值的????哪集里面讲了??我都看了好几遍了怎么没看到这句话?老师讲的 是静态代码块是给类初始化用的吧??
作者: iFmmer    时间: 2015-6-24 18:26
liu100chao 发表于 2015-6-24 18:09
静态代码块就是给静态成员变量赋值的????哪集里面讲了??我都看了好几遍了怎么没看到这句话?老师讲的 ...

我也记不清了,但是按照上面截图里老师给的顺序,静态代码块应该在静态变量初始化之前初始化。
但是编程结果显示是静态代码块是在静态成员变量出现之后才运行的,这是怎么回事啊
作者: liu100chao    时间: 2015-6-24 18:48
iFmmer 发表于 2015-6-24 18:26
我也记不清了,但是按照上面截图里老师给的顺序,静态代码块应该在静态变量初始化之前初始化。
但是编程 ...

那是不可能的,我刚刚特意写了个小程序 验证下,代码给你参考下,望采纳
class shiiyan
{
        public static void main(String[] args)
        {
                System.out.println(demo.getStr());
                new demo();
                System.out.println(demo.getStr());
               

        }
}

class demo
{
        private static String str = "静态成员变量";
        static
        {
                System.out.println("静态代码块运行");
        }

        demo()
        {
                System.out.println("构造函数运行运行");
        }

        public static String getStr()
        {
                return str;
        }
}

作者: iFmmer    时间: 2015-6-24 19:05
liu100chao 发表于 2015-6-24 18:48
那是不可能的,我刚刚特意写了个小程序 验证下,代码给你参考下,望采纳
class shiiyan
{

哈哈 什么采纳不采纳的 谢啦
作者: liu100chao    时间: 2015-6-25 17:57
iFmmer 发表于 2015-6-24 19:05
哈哈 什么采纳不采纳的 谢啦

不客气,像这类知识点问题,完全可以自己写个小程序验证下就可以了!关键还是得学会自己查看API文档!
作者: JJJD    时间: 2015-6-25 18:38
来学习了。。。




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