黑马程序员技术交流社区

标题: 关于静态方法的小问题 [打印本页]

作者: 官仁杰    时间: 2012-9-26 18:40
标题: 关于静态方法的小问题
本帖最后由 官仁杰 于 2012-9-26 20:21 编辑
  1. public class test {
  2.         public static void main(){
  3.                 new StaticDemo();
  4.         }
  5. }
  6. //5.14
  7. class StaticDemo{
  8.         static String s1 = "s1";
  9.         static{
  10.                 String s2 = "s2";
  11.         }
  12.         public static void show(){
  13.                 System.out.println(s1);
  14.                 System.out.println(s2);
  15.         }
  16. }
复制代码
为什么不能打印s2?
作者: 杨志男    时间: 2012-9-26 18:45
new了对象,不调用方法?
作者: 周万谋    时间: 2012-9-26 18:48
本帖最后由 周万谋 于 2012-9-26 18:50 编辑

s2 只在区间
static{
String s2="s2"
}有效,还有主函数忘记写数组String[] 了
作者: 王贵朝    时间: 2012-9-26 18:52
我认为s2超出了变量作用域,s2是在Static代码块中声明的,属于局部变量
作者: 黑马-王康    时间: 2012-9-26 18:58
三楼说的对!呵呵

对于变量要注意3点哦...
1)看其作用域。
2)看其类型。
3)看其初始类型值。


作者: 孙岳    时间: 2012-9-26 19:11
1,main方法没加参数。
2,静态方法show()没有被调用。
3,s2是静态代码块中定义的,作用域在静态代码块中,show方法调用不到。
试试这个:
public class Test {
        public static void main(String[] args){
                new StaticDemo();
        StaticDemo.show();
        }
}
//5.14
class StaticDemo{
        static String s1 = "s1";
        static{
                String s2 = "s2";
        System.out.println(s2);
        }
        public static void show(){
                System.out.println(s1);
           //     System.out.println(s2);
        }
}
作者: 王玉岩    时间: 2012-9-26 19:30
public class test {
        public static void main(){//首先这里的话应该是main(String[] args)
                new StaticDemo();
        }
}
//5.14
class StaticDemo{
        static String s1 = "s1";
        static{
                String s2 = "s2";//静态代码块是随着类的加载而加载因为他是静态的,当你后边要打印s2的时候并不能找到s2
                 System.out.println(s2); //这句话我给你改到这里,这样就可打印出s2,如果还需要打印s1的话再new完之后再调用一下show()即可。

        }
        public static void show(){
                System.out.println(s1);

        }
}


作者: 李润根    时间: 2012-9-26 20:05
静态代码块 随着类的加载而执行,只执行一次

而且S2只作用于静态代码块
作者: 官仁杰    时间: 2012-9-26 20:21
问题已解决
谢谢各位




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