Verschiedene Möglichkeiten zum initialisieren von Variablen in Java

Stieß ich auf den code von guessgame. Es ist ein code-snippet, wo drei Spieler-Objekte werden initialisiert, wenn Sie den folgenden Weg:

public class guessgame{
    Player p1;
    Player p2;
    Player p3;
    public void startGame() {
        p1 = new Player();
        p2 = new Player();
        p3 = new Player();
    ...
    }
    ...
}

Das gleiche funktioniert, wenn ich deklariert und initiiert es den folgenden Weg als gut.

public class GuessGame {
    Player p1 = new Player();
    Player p2 = new Player();
    Player p3 = new Player();
    public void startGame(){
        ...
    }
    ...
}

Gibt es einen Unterschied zwischen den beiden? Im ersten Beispiel, warum wurde der drei Instanzvariablen deklariert, die außerhalb der startgame () - Methode, und ist es wirklich wichtig, intern?

  • Die zweite version beginnt die drei Spieler auf die Instanziierung der GuessGame Klasse, die zuerst initialisiert Sie, wenn startGame() ausgeführt wird.
  • Sie deklariert in der Klasse, in beiden Fällen.
  • sorry, ich denke, ich kann nicht Lesen. Entfernen.
  • 1 : Initialisierung in der Methode startGame() während den 2. Platz in der Klasse Ebene
  • Was hat Linux damit zu tun haben?
  • meinst du zu sagen "warum wurden die 3 Instanz-Variablen initialisiert, die außerhalb des startgame () - Methode...?" Offensichtlich sind Sie deklariert, die außerhalb der Methode, aber ich wollte nur klären, wenn Sie Frage war über die beiden Initialisierung Ansätze.
  • Es kann nützlich sein, zu verlassen Variablen unitialialized auf Klassen-Ebene oder initialisieren Sie Sie als ein leeres Objekt, oder etwas, dass zeigt an, Ihre unitialialized. Auf diese Weise können Sie feststellen, ob eine Methode ausgeführt wurde, noch nicht. Es hängt wirklich von der Gestaltung Ihrer code aber.
  • Ich hatte Zweifel über das sowohl die Initialisierung Ansätze und der Umfang der Variablen. Ich habe das geklärt. Danke.
  • Der Umfang ist der gleiche auf beiden (Klasse Niveau), aber die Initialisierung ist anders (wie bereits von einigen Antworten hier)
  • Im zweiten Beispiel fehlt eine schließende Klammer auf die startGame-Methode. Es macht mich ein bisschen verrückt.
  • OCD in kicks? Ich Tat es für Sie 🙂
  • lokale varibales vs Instanz varibales
  • Die Klasse sah aus wie eine Methode, die auf den ersten Blick. Optische Illusionen FTW

InformationsquelleAutor nohup | 2015-10-23
Schreibe einen Kommentar