class AA
{
    static int a = 3>2?3:5;  //这里应该是一个执行语句,但在main方法之外居然能给a赋值出来,怪!!!!
}

解决方案 »

  1.   

    书要仔细看哇static是优先于main函数先执行的  如果含有main的类中有static的话
      

  2.   

    main只是java入口,没有其他特别之处啊,没有规定说执行语句必须在main方法里.
    最典型的例子:
    没有main方法的打印操作public class Test_Java_gannbare 
    {
      static
      {
        System.out.println("No main!");
        System.exit(0);
      }
    }然后编译运行这个类,和有main方法的效果是一致的.
      

  3.   

      平时要多考虑下内存的使用  把这个考虑好了就知道了  static是优先于main函数先执行的 
      

  4.   

    那为什么
    class A
    {
       if(3>2) System.out.println("if");
       private int a;
    }这个程序为什么出错呢???
    谁能告诉我?
      

  5.   

    ...
    ......
    .........
    一個是expression, 一個是statement...
      

  6.   

    class A
    {
      private int a; 
      if(3>2) System.out.println("if");  
    }
    这样也出错,好不好...
      

  7.   

    class A
    {
      private int a; 
      static
      {
        if(3>2) System.out.println("if");  
      }
    }
      

  8.   

    静态变量比较特殊,它是先于main方法赋值的,所以没有问题。
      

  9.   


    语句不能直接放在类的里面  一定要放在方法里面  如果放在静态的方法里面  那么这个语句会优先于main方法执行刚刚没有看清楚哇  我记得你以前提问线程的时候问的问题都蛮高级的哇  这个问题么有点意思
      

  10.   

    静态的变量或者静态的代码块,是在main函数之前运行的
      

  11.   

    如果main外有static的语句或块的话,先执行static相关语句和块,只执行一次,再执行构造方法
      

  12.   

    static 修饰的变量和方法  在程序运行之初会先在栈中创建实例,不靠MAIN方法调用,  比main方法牛多了.
      

  13.   


    类里面只能定义变量和方法.if(3>2) System.out.println("if"); 这是一条语句,是必须放在方法里面的.main方法要使用main方法外的变量必须是static的.
      

  14.   

    补充知识点class Test
    {  static { System.out.println("1");}
       public static void main(String args[])
          { 
    System.out.println("2");
          }
       static { System.out.println("3");}
    }   输出 1   3    2
     静态块,   main在所有静态块执行完后再执行
      

  15.   


    class AA
    {
        static int a = 3>2?3:5;  //这里是声明一个变量,同时给了它一个值,是可以的
         //你要是改成下面这样就错了  
         //static int a;
        //a = 3>2?3:5;这个是赋值语句,是不行的                       
    }
      

  16.   

    static 优先级最高啊,先执行static部分
      

  17.   

    即使是 int a = 3>2?3:5; 这也是正确无误的。为什么???
      

  18.   

    静态代码在类被装载的时候执行的,可以没有main函数
      

  19.   

    静态的变量或者静态的代码块,是在main函数之前运行的
    正解
      

  20.   

    static int a = 3>2?3:5;
    这是一个初始化语句,就好象你可以在类体里面写A a = new A();一样
    该语句等同于
    static int a = getA();
    private int getA(){
      if(3>2)return 3;
      return 5;
    }if(3>2) System.out.println("if"); 
    这样的语句不能直接存在于类体里面,可以写在方法,static块里面这个应该是你的问题的正解!!!