我有两个版本的代码。
Launcher.java
class Launcher {
public static void main(String[] args) {
LuckyNumber game;
game = new LuckyNumber();
game.start();
}
}
Player.java
class Player {
int randomNumber = 0;
public void roll(){
randomNumber = (int) (Math.random() * 10);
}
}
LuckyNumber.java
class Launcher {
public static void main(String[] args) {
LuckyNumber game;
game = new LuckyNumber();
game.start();
}
}
Launcher.java
class Launcher {
public static void main(String[] args) {
LuckyNumber game;
game = new LuckyNumber();
game.start();
}
}
Player.java
class Player {
int randomNumber;
randomNumber = 0;
public void roll(){
randomNumber = (int) (Math.random() * 10);
}
}
LuckyNumber.java
class Launcher {
public static void main(String[] args) {
LuckyNumber game;
game = new LuckyNumber();
game.start();
}
}
第一个版本的代码可以正常编译,但是第二个版本的代码无法编译,并且编译器显示以下错误:
.\Player.java:4: error: <identifier> expected
randomNumber = 0;
^
.\Player.java:4: error: cannot find symbol
randomNumber = 0;
^
symbol: class randomNumber
location: class Player
2 errors
所以问题是为什么:
int variable;
variable = 0;
不同于:
int variable = 0;
有什么区别?
答案 0 :(得分:3)
两者是相同的,但仅当它们在方法中时。
在您的情况下,初始化变量而不声明变量在方法外部无效。
答案 1 :(得分:0)
Java中的类可以具有成员。
class Player {
int variable = 0; // this defines a member variable within the class Player
}
但是您不能将代码/表达式放在类声明主体中。只能在方法或构造函数中,或者在变量初始化期间。
int variable;
variable = 0; // this is an expression and should be within the constructor, a method or the initialiser of the variable.
答案 2 :(得分:0)
直到您在方法之外编写代码之前,都是一样的。您不能这样:
class Player {
int randomNumber;
randomNumber = 0;
这将导致Java语法错误。您应该阅读有关Java属性的信息。
答案 3 :(得分:0)
这是一个声明:
int variable;
这是带有初始化的声明:
int variable = 0;
它们在类级别和方法内部均有效。
但是,对于已经声明的变量,这是
variable = 0;
被视为可执行代码,并且仅在方法内部有效,而在类级别无效。
在IneliJ之类的IDE中,如果您编写:
int variable;
variable = 0;
ide将提示您将两行合并到此:
int variable = 0;
因为相同。