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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 官仁杰 中级黑马   /  2012-9-26 18:40  /  1708 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 官仁杰 于 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?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
new了对象,不调用方法?
回复 使用道具 举报
本帖最后由 周万谋 于 2012-9-26 18:50 编辑

s2 只在区间
static{
String s2="s2"
}有效,还有主函数忘记写数组String[] 了
回复 使用道具 举报
我认为s2超出了变量作用域,s2是在Static代码块中声明的,属于局部变量
回复 使用道具 举报
三楼说的对!呵呵

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

回复 使用道具 举报
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:37
7#
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);

        }
}

回复 使用道具 举报
静态代码块 随着类的加载而执行,只执行一次

而且S2只作用于静态代码块
回复 使用道具 举报
问题已解决
谢谢各位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马