A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iFmmer 中级黑马   /  2015-6-24 11:55  /  1421 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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


7 个回复

倒序浏览
求解啊,是老师的失误还是我理解错了?
回复 使用道具 举报
静态代码块就是给静态成员变量赋值的????哪集里面讲了??我都看了好几遍了怎么没看到这句话?老师讲的 是静态代码块是给类初始化用的吧??
回复 使用道具 举报
liu100chao 发表于 2015-6-24 18:09
静态代码块就是给静态成员变量赋值的????哪集里面讲了??我都看了好几遍了怎么没看到这句话?老师讲的 ...

我也记不清了,但是按照上面截图里老师给的顺序,静态代码块应该在静态变量初始化之前初始化。
但是编程结果显示是静态代码块是在静态成员变量出现之后才运行的,这是怎么回事啊
回复 使用道具 举报
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;
        }
}
回复 使用道具 举报
liu100chao 发表于 2015-6-24 18:48
那是不可能的,我刚刚特意写了个小程序 验证下,代码给你参考下,望采纳
class shiiyan
{

哈哈 什么采纳不采纳的 谢啦
回复 使用道具 举报
iFmmer 发表于 2015-6-24 19:05
哈哈 什么采纳不采纳的 谢啦

不客气,像这类知识点问题,完全可以自己写个小程序验证下就可以了!关键还是得学会自己查看API文档!
回复 使用道具 举报
JJJD 中级黑马 2015-6-25 18:38:22
8#
来学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马