为什么我不能在方法之外做任务?

20 java variables variable-assignment

如果我尝试为类中的变量赋值,但在方法之外我会收到错误.

class one{
 Integer b;
 b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在创建过程中初始化它,它就可以工作.

class one{
 Integer b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)

在方法内部,它适用于两种情况.

Pet*_*rey 25

你需要做的

class one{
 Integer b;
 {
    b=Integer.valueOf(2);
 }
}
Run Code Online (Sandbox Code Playgroud)

因为语句必须出现在代码块中.

在这种情况下,块是一个initailiser块,它被添加到每个构造函数(在这种情况下是默认构造函数).它super()在任何构造函数中的主代码块之前和之前运行之后运行.

顺便说一句:您可以使用静态初始化块,static { }在初始化类时调用该块.

例如

class one{
 static final Integer b;

 static {
    b=Integer.valueOf(2);
 }
}
Run Code Online (Sandbox Code Playgroud)


Raz*_*van 13

因为赋值语句,只允许代码块内部使用语句(方法,构造函数,静态初始化器等)

除了这些之外,只允许声明.

这个 :

  class one{
        Integer b=Integer.valueOf(2);
  }
Run Code Online (Sandbox Code Playgroud)

是一个带初始化器的声明.这就是为什么被接受的原因