我遇到了错误Syntax error on token ";", , expected
。当我使用简写表示法将变量声明并初始化为类变量时会发生这种情况。如果我初始化并声明变量的方式与局部变量完全相同,则不会发生此错误。
代码看起来完全像这样:
public class SomeClass{
double number1, number2; //On this line I get the error I mention above.
number1 = number2 = 1.0;
}
为什么在使用这种表示法声明和初始化类变量时会出现此错误?
答案 0 :(得分:1)
如果它是一个字段,则只会出现此错误,因此我假设这是一个字段。
这是因为number1 = number2 = 1.0;
没有初始化类的字段。相反,它是一行代码必须位于方法块的一侧。
要解决此问题,您可以在方法或构造函数中初始化它,或执行:
double number1 = 1.0, number2 = 1.0;
答案 1 :(得分:1)
声明类变量时,需要将其保持未初始化状态或同时初始化。如果您想稍后初始化它,可以将代码放在构造函数
中public class MyClass {
double number1 = 1.0, number2;
public MyClass {
number2 = 2.0;
}
}
答案 2 :(得分:1)
这应该有效
public class SomeClass
{
double number1, number2;
{
number1 = number2 = 1.0;
}
}
你不能直接在类体中编写语句;通常陈述在方法体中;它们也可以出现在静态或实例初始化块
中public class Foo
{
static{ print("foo"); } // executed during class initialization
{ print("foo"); } // executed in constructor
print("foo"); // Error!
}
JLS http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-ClassBody
ClassBodyDeclaration:
ClassMemberDeclaration
InstanceInitializer
StaticInitializer
ConstructorDeclaration
ClassMemberDeclaration:
FieldDeclaration
MethodDeclaration
ClassDeclaration
InterfaceDeclaration
;
出于某种原因,允许使用空语句:)
class Foo
{
;
}
(不是真的 - 孤独&#34 ;;"被简单地丢弃,不算作声明)