我倒 你要么直接就这样
private int i =10;就好了的啊
要么就在方法里面赋值
怎么可以
private int i;
i = 10;

解决方案 »

  1.   

    兄弟的问题是个好问题啊,以前没注意。找了一下,建议去看《JAVA IN A NUTSHELL》第3章,3。2 CREATING AND INTIALIZING OBJECTS。就都明白了。看你的名字应该是从C++转过来的吧。因为JAVA是纯面向对象语言,就是说所有的东西都是类,包括已经存在的API库和任何人要编的JAVA程序。在类里只能有2种东西存在。一个是变量,一个是方法。所以用任何一种都合理。
    private int i =10;这个就是变量。合理。
    如果写成这样
    private int i;
    i = 10;
    很明显第2个不是方法。所以JAVA说出错。但是JAVA语言里除了定义变量和方法外,还定义了构造函数。和方法类似。就是没有返回。
    这个构造函数不管你定义不定义都存在。不定义,JAVA就自动生成,来默认。当你写成这样的时候,
     int i;
    static int j;// 静态初始化语句块
    static{
    j=10;
    System.out.println("In static initializer.");
    }//实例初始化语句块
    {
    i=10;
    System.out.println("In instance initializer.");
    }// 构造方法
    public ClassExample(){
    System.out.println("In constructor.");
    }
    JAVA实际做的是把
    int i;
    和这个块
    {
    i=10;
    System.out.println("In instance initializer.");
    }
    放到构造函数里,就象public ClassExample(){int i;i=10;System.out.println("In instance initializer.");System.out.println("In constructor.");
    }
    这样的来执行。
    同样,对于静态的,JAVA也有个默认的构造函数在后台。静态的声明和静态块都放到那里。
      

  2.   

    在变量声明完成之后的赋值操作一定要在类方法里操作,int i=10;是直接在声明时赋初值当然可以的,而写在
    {
    i=10;
    System.out.println("In instance initializer.");
    }
    里,因为这是一个匿名方法,已经有了方法的概念,所以也可以编译通过。
      

  3.   

    apollo333和zrtl两位兄弟都分析的很透彻啊,呵呵void ClassBodyDeclaration() :
    {}
    {
      LOOKAHEAD( { isInitializer() } )
      Initializer()
    |
      LOOKAHEAD( { isNestedClassDeclaration() } )
      NestedClassDeclaration()
    |
      LOOKAHEAD( { isNestedInterfaceDeclaration() } )
      NestedInterfaceDeclaration()
    |
      LOOKAHEAD( { isConstructorDeclaration() } )
      ConstructorDeclaration()
    |
      LOOKAHEAD( { isMethodDeclaration() } )
      MethodDeclaration()
    |
      FieldDeclaration()
    }其中
    void VariableInitializer() :
    {}
    {
      ArrayInitializer()
    |
      LOOKAHEAD(1, <BOOLEAN> | <BYTE> | <CHAR> | <DOUBLE> | <FALSE> | <FLOAT> | <INT> |
                   <LONG> | <NEW> | <NULL> | <SHORT> | <SUPER> | <THIS> | <TRUE> |
                   <VOID> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> |
                   <CHARACTER_LITERAL> | <STRING_LITERAL> | <IDENTIFIER> | <LPAREN> |
                   <BANG> | <TILDE> | <INCR> | <DECR> | <PLUS> | <MINUS>)
      Expression()
    }