楼主你好,static 是用来声明静态变量的,不是方法体,system 是需要放在方法体弄进行执行的语句

解决方案 »

  1.   

    你这个要去查查System.out.print是在什么时候执行的,像这种东西都是生命周期的问题
      

  2.   

    我加个函数就不报错了 
    static void say(){
     x = 5;// 不报错
     System.out.println(x);// 编译报错 
     }
     static int x, y;
      

  3.   

    谁说static块里不能不能放sysout的
      

  4.   

    原来程序的错误是:非法的向前引用解决办法
    1)把static int x, y;提到static {}的前面【先定义后使用】
    2)System.out.println(Test .x);【明确使用类变量】
    3)System.out.println(x=5);【坏坏的idea】结果都能按照预期打出5来最好能下载一个反编译class文件为源代码的工具来看看javac到底把源代码编译成什么了……3)的反编译结果如下:
    import java.io.PrintStream;public class SystemOutPrintlnTest
    {
      static int x = 5;
      static int y;
      
      public static void main(String[] args) {}
      
      static
      {
        System.out.println(SystemOutPrintlnTest.x = 5);
      }
    }