Java 为什么分配刚声明的类变量是非法的?
为什么语言看不到我刚才声明的变量?这是Java独有的还是在所有类式OOP语言中都是如此?在Java中,您可以在类内声明实例变量,但在方法外声明实例变量,但语句如Java 为什么分配刚声明的类变量是非法的?,java,class,oop,Java,Class,Oop,为什么语言看不到我刚才声明的变量?这是Java独有的还是在所有类式OOP语言中都是如此?在Java中,您可以在类内声明实例变量,但在方法外声明实例变量,但语句如someVar=123必须在方法(或构造函数、静态初始值设定项或实例初始值设定项)内。在Java中,可以在类内声明实例变量,但在方法外声明实例变量,但声明语句如下someVar=123必须在方法(或构造函数、静态初始值设定项或实例初始值设定项)中。类定义中不能有任意语句。您可以立即在声明中指定变量: class A { publi
someVar=123代码>必须在方法(或构造函数、静态初始值设定项或实例初始值设定项)内。在Java中,可以在类内声明实例变量,但在方法外声明实例变量,但声明语句如下someVar=123代码>必须在方法(或构造函数、静态初始值设定项或实例初始值设定项)中。类定义中不能有任意语句。您可以立即在声明中指定变量:
class A {
public int someVar;
someVar = 123; /* cannot find symbol */
}
或者,将其分配到构造函数或其他实例范围:
public int someVar = 123;
请注意,第二种技术使用的是,它并不总是最清晰的代码。类定义中不能有任意语句。您可以立即在声明中指定变量:
class A {
public int someVar;
someVar = 123; /* cannot find symbol */
}
或者,将其分配到构造函数或其他实例范围:
public int someVar = 123;
请注意,第二种技术使用的是,它并不总是最清晰的一段代码。您不能声明someVar=123直接在课堂上编写代码>语句。
它应该是实例
块或方法
或构造函数
public class A {
public int someVar;
public A() {
someVar = 123;
}
}
//Or...
public class B {
public int someVar;
{ someVar = 123; }
}
或
或
或
不能声明someVar=123直接在课堂上编写代码>语句。
它应该是实例
块或方法
或构造函数
public class A {
public int someVar;
public A() {
someVar = 123;
}
}
//Or...
public class B {
public int someVar;
{ someVar = 123; }
}
或
或
或
但奇怪的是,您可以编写代码
class A {
public int someVar ;
public void method(){
somevar = 123;
}
}
但奇怪的是,您可以编写代码
class A {
public int someVar ;
public void method(){
somevar = 123;
}
}
也许您想使用someVar
作为静态变量。
然后您应该声明它也是静态的。像这样使用它:
public class AFunnyClass {
public int someVar;
{
someVar = 123;
}
public static int anotherVar;
static {
anotherVar = 456;
}
public int yetAnotherVar = 789;
public static int adNauseum = 101112;
}
这意味着someVar不仅仅是这个类实例的一个成员,它本身也成为了这个类的一个成员。这也意味着someVar
将只实例化一次,并且可以被此类的所有实例使用也许您希望将someVar
用作静态变量。
然后您应该声明它也是静态的。像这样使用它:
public class AFunnyClass {
public int someVar;
{
someVar = 123;
}
public static int anotherVar;
static {
anotherVar = 456;
}
public int yetAnotherVar = 789;
public static int adNauseum = 101112;
}
这意味着someVar不仅仅是这个类实例的一个成员,它本身也成为了这个类的一个成员。这也意味着someVar
将只实例化一次,并且可以被此类的所有实例使用类主体不能包含可执行代码。@SotiriosDelimanolis no,false;您可以编写public Foo Foo=new Foo()
,构造函数包含任意代码。@djechlin这是一个实例初始化语句。看一看它与可执行代码不同。@djechlin是对象初始化,这是Java独有的还是适用于所有OOP语言?类主体不能包含可执行代码。@SotiriosDelimanolis否,false;您可以编写public Foo Foo=new Foo()
,构造函数包含任意代码。@djechlin这是一个实例初始化语句。看一看它与可执行代码不同。@djechlin是对象初始化,那么这是Java独有的还是适用于所有OOP语言?+1,但将添加它们也可能在初始化中block@Kon是的,我已经添加到我的答案中以使其更完整。+1,但将添加它们也可能在初始化范围内block@Kon对我已经添加到我的答案中,使其更加完整。或者public int-somevar=123代码>或公共int-somevar=123代码>是,使用实例初始值设定项和静态初始值设定项。是,使用实例初始值设定项和静态初始值设定项。