Was ist der richtige Weg, um eine boolesche Variable in Java zu deklarieren?

8

Ich habe gerade angefangen, Java zu lernen. In dem Online-Kurs, den ich folge, werde ich gebeten, den folgenden Code auszuprobieren:

%Vor%

Ich verstehe nicht, warum ich gefragt werde, isMatch als falsch zu deklarieren, wenn ich in der nächsten Zeile die E-Mail-Adressen vergleiche und den Wert isMatch zuweise.
Ich habe den folgenden Code ausprobiert, der genau so zu funktionieren scheint:

%Vor%

Auf dem Kurs erklärt es nicht, warum ich zuerst isMatch als falsch deklariere. Gibt es einen Grund, warum ich isMatch als falsch erklären muss, bevor ich die E-Mail-Adressen vergleiche?

    
user1762031 20.10.2012, 19:43
quelle

6 Antworten

7

Das müssen Sie nicht, aber einige Leute möchten explizit alle Variablen initialisieren (ich auch). Vor allem diejenigen, die in einer Vielzahl von Sprachen programmieren, ist es einfach, die Regel zu haben, Ihre Variablen immer zu initialisieren, anstatt Fall für Fall / Sprache für Sprache zu entscheiden.

Zum Beispiel hat Java Standardwerte für Boolean, int usw. C gibt andererseits nicht automatisch Anfangswerte, was auch immer im Speicher ist, ist das, was Sie am Ende haben, es sei denn, Sie vergeben einen Wert explizit selbst.

In Ihrem Fall oben, wie Sie entdeckt haben, funktioniert der Code genauso gut ohne die Initialisierung, besonders weil die Variable in der nächsten Zeile gesetzt ist, was sie besonders redundant erscheinen lässt. Manchmal können Sie beide Zeilen kombinieren (Deklaration und Initialisierung - wie in einigen anderen Posts gezeigt) und das Beste aus beiden Ansätzen herausholen, d. H. Initialisieren Sie Ihre Variable mit dem Ergebnis der Operation email1.equals (email2); .

    
Levon 20.10.2012, 19:44
quelle
10

Nicht nur, dass es nicht als false zuerst deklariert werden muss, ich würde noch einige andere Verbesserungen hinzufügen:

  • Verwenden Sie boolean anstelle von Boolean (das kann auch null ohne Grund sein)

  • während der Deklaration zuweisen:

    %Vor%
  • ... und benutze final keyword, wenn du kannst:

    %Vor%

Last but not least:

%Vor%

kann wie folgt ausgedrückt werden:

%Vor%

was das isMatch -Flag nicht so nützlich macht, es könnte die Lesbarkeit nicht beeinträchtigen. Ich schlage vor, nach besseren Kursen / Tutorials zu suchen ...

    
Tomasz Nurkiewicz 20.10.2012 19:45
quelle
1

Es gibt keinen Grund, das zu tun. In der Tat würde ich wählen, Deklaration und Initialisierung wie in

zu kombinieren %Vor%

Verwenden Sie das Schlüsselwort final , damit Sie es später (versehentlich) auch nicht mehr ändern können.

    
Confusion 20.10.2012 19:45
quelle
1
___ qstntxt ___

Ich habe gerade angefangen, Java zu lernen. In dem Online-Kurs, den ich folge, werde ich gebeten, den folgenden Code auszuprobieren:

%Vor%

Ich verstehe nicht, warum ich gefragt werde, wrapper als falsch zu deklarieren, wenn ich in der nächsten Zeile die E-Mail-Adressen vergleiche und den Wert boolean zuweise.
Ich habe den folgenden Code ausprobiert, der genau so zu funktionieren scheint:

%Vor%

Auf dem Kurs erklärt es nicht, warum ich zuerst boolean als falsch deklariere. Gibt es einen Grund, warum ich false als falsch erklären muss, bevor ich die E-Mail-Adressen vergleiche?

    
___ answer12992046 ___

Nicht nur, dass es nicht als false zuerst deklariert werden muss, ich würde noch einige andere Verbesserungen hinzufügen:

  • Verwenden Sie default anstelle von %code% (das kann auch %code% ohne Grund sein)

  • während der Deklaration zuweisen:

    %Vor%
  • ... und benutze %code% keyword, wenn du kannst:

    %Vor%

Last but not least:

%Vor%

kann wie folgt ausgedrückt werden:

%Vor%

was das %code% -Flag nicht so nützlich macht, es könnte die Lesbarkeit nicht beeinträchtigen. Ich schlage vor, nach besseren Kursen / Tutorials zu suchen ...

    
___ answer12992045 ___

Es gibt keinen Grund, das zu tun. In der Tat würde ich wählen, Deklaration und Initialisierung wie in

zu kombinieren %Vor%

Verwenden Sie das Schlüsselwort %code% , damit Sie es später (versehentlich) auch nicht mehr ändern können.

    
___ answer12992039 ___

Das müssen Sie nicht, aber einige Leute möchten explizit alle Variablen initialisieren (ich auch). Vor allem diejenigen, die in einer Vielzahl von Sprachen programmieren, ist es einfach, die Regel zu haben, Ihre Variablen immer zu initialisieren, anstatt Fall für Fall / Sprache für Sprache zu entscheiden.

Zum Beispiel hat Java Standardwerte für Boolean, int usw. C gibt andererseits nicht automatisch Anfangswerte, was auch immer im Speicher ist, ist das, was Sie am Ende haben, es sei denn, Sie vergeben einen Wert explizit selbst.

In Ihrem Fall oben, wie Sie entdeckt haben, funktioniert der Code genauso gut ohne die Initialisierung, besonders weil die Variable in der nächsten Zeile gesetzt ist, was sie besonders redundant erscheinen lässt. Manchmal können Sie beide Zeilen kombinieren (Deklaration und Initialisierung - wie in einigen anderen Posts gezeigt) und das Beste aus beiden Ansätzen herausholen, d. H. Initialisieren Sie Ihre Variable mit dem Ergebnis der Operation %code% .

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer12992097 ___

In Ihrem Beispiel brauchen Sie das nicht. Als Standardprogrammierungspraxis werden alle Variablen, auf die innerhalb eines Codeblocks verwiesen wird, angegeben, zum Beispiel %code% , und außerhalb des Blockieren Sie auch die Variablen außerhalb des try-Blocks zuerst, zB

Dies ist hilfreich, wenn der Aufruf der equals-Methode eine Ausnahme auslöst, z. %code% ;

%Vor%     
___ antwort12992050 ___

Zunächst sollten Sie keine von ihnen verwenden. Sie verwenden %code% type, das selten verwendet werden sollte, wenn Sie einen primitiven Typ haben. Also sollten Sie %code% lieber verwenden.

Außerdem initialisieren wir die Variable %code% auf %code% , um einen anfänglichen Standardwert zu halten, der falsch ist. Falls Sie es als Instanzvariable deklariert haben, wird es automatisch auf %code% initialisiert.

Aber es ist völlig Ihnen überlassen, ob Sie einen Standardwert zuweisen oder nicht. Ich bevorzuge es vielmehr, sie zum Zeitpunkt der Deklaration zu initialisieren.

Aber wenn Sie Ihre Variable sofort zuweisen, können Sie ihr direkt einen Wert zuweisen, ohne einen %code% -Wert definieren zu müssen.

Also, in Ihrem Fall würde ich es so verwenden: -

%Vor%     
___ answer12992052 ___

Wie von Levon angegeben, ist dies nicht obligatorisch, wie in den Dokumenten angegeben: Ссылка

Dies ist wahrscheinlich eine Angewohnheit aus anderen Sprachen, die keine Standardwerte für primitive Datentypen garantieren.

    
___ tag123boolean ___ Ein boolescher Datentyp ist ein Datentyp mit nur zwei möglichen Werten: true oder false. ___ tag123variables ___ DAS IST AMBIGUOUS; VERWENDEN SIE SPRACHSCHRIFTEN, WENN SIE ANWENDBAR SIND. Eine Variable ist ein benannter Datenspeicherort im Speicher. Ein Computerprogramm kann unter Verwendung von Variablen Zahlen, Text, Binärdaten oder eine Kombination dieser Datentypen speichern. Sie können im Programm weitergegeben werden. ___ qstnhdr ___ Was ist der richtige Weg, um eine boolesche Variable in Java zu deklarieren? ___
Rohit Jain 20.10.2012 19:46
quelle
1

In Ihrem Beispiel brauchen Sie das nicht. Als Standardprogrammierungspraxis werden alle Variablen, auf die innerhalb eines Codeblocks verwiesen wird, angegeben, zum Beispiel try{} catch(){} , und außerhalb des Blockieren Sie auch die Variablen außerhalb des try-Blocks zuerst, zB

Dies ist hilfreich, wenn der Aufruf der equals-Methode eine Ausnahme auslöst, z. NullPointerException ;

%Vor%     
Yogendra Singh 20.10.2012 19:52
quelle
0

Wie von Levon angegeben, ist dies nicht obligatorisch, wie in den Dokumenten angegeben: Ссылка

Dies ist wahrscheinlich eine Angewohnheit aus anderen Sprachen, die keine Standardwerte für primitive Datentypen garantieren.

    
ApplePie 20.10.2012 19:46
quelle

Tags und Links