“ int变量= 0;”有什么区别?和“ int变量;变量= 0;”在Java类中学习?

时间:2018-12-15 15:41:28

标签: java variables

我有两个版本的代码。

版本1

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();
    }
}

版本2

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;

有什么区别?

4 个答案:

答案 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;

因为相同