黑马程序员技术交流社区

标题: 静态代码块的相关问题 [打印本页]

作者: 18334705181    时间: 2014-8-7 16:58
标题: 静态代码块的相关问题
静态代码块是用来初始化类的,如果将它私有化后,结果会怎么么样呢?

作者: 陶圣虎    时间: 2014-8-7 17:25
静态代码块是对象的静态代码块。即使私有,也还是可以被自身对象初始化时调用啊。
作者: dingpanbo    时间: 2014-8-7 19:08
静态代码块应该是给类进行初始化的吧,不管怎么样,类一运行就会给类初始化。
作者: 黑马黄武先    时间: 2014-8-7 19:17
不懂的屌丝路过:lol
作者: 江苏孙浩    时间: 2014-8-7 19:30
怎么进行静态代码块的私有化?
作者: 张涛的狂怒    时间: 2014-8-7 19:55
静态代码块随着类的加载就已经初始化了。也就是说在本类中可以任意调用。加入private的话,可以不让其他类访问。这大概就是作用吧
作者: star5603    时间: 2014-8-7 20:17
这个私有有意义么。。。
作者: —Jimmy—    时间: 2014-8-7 20:22
感觉是没什么意义,本来就是用来初始化用的,就算没有自己传值吧
作者: 李林_    时间: 2014-8-7 23:33
静态代码块用于初始化静态类属性(静态属性)
都存在于代码区
当类加载时首先执行 静态属性 再执行静态代码块 给静态属性赋值 (静态属性必须在静态代码块的前头)
而当内加载时  静态属性和静态代码块 只加载一次
而静态代码块本来就没有提供向外部的访问形式  所以加private 和 不加  private 没有实质区别
静态属性只能以类名去调用
这样静态属性就形成了数据的共享
作者: justin1258    时间: 2014-8-8 09:57
不能私有化
作者: 18334705181    时间: 2014-8-10 09:44
如果私有化的话,类会成功加载么?求解答
作者: 18334705181    时间: 2014-8-10 10:14
class  Deno
{        private static
        {
                String a;
        }
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
这样写的话会出现一下错误
F:\java\java two phase>javac Demotwo.java
Demotwo.java:3: 错误: 非法的类型开始
        {
        ^
Demotwo.java:3: 错误: 需要';'
        {
         ^
Demotwo.java:4: 错误: 需要<标识符>
                String a;
                        ^
Demotwo.java:6: 错误: 需要class, interface或enum
        public static void main(String[] args)
                      ^
Demotwo.java:9: 错误: 需要class, interface或enum
        }
        ^
5 个错误
纠正的话就不会有这样的错误l了;如下:
class  Deno
{         static
        {
                String a;
        }
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}





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