Anscheinend wird ein Doppelpunkt in Java auf verschiedene Arten verwendet. Würde es jemandem etwas ausmachen zu erklären, was es tut?
Zum Beispiel hier:
String cardString = "";
for (PlayingCard c : this.list) // <--
{
cardString += c + "\n";
}
Wie würden Sie diese for-each
Schleife anders schreiben, um die nicht zu integrieren :
?
Antworten:
Es gibt mehrere Stellen, an denen Doppelpunkte im Java-Code verwendet werden:
1) Jump-Out-Label ( Tutorial ):
2) Ternärer Zustand ( Tutorial ):
3) Für jede Schleife ( Tutorial ):
4) Behauptung ( Leitfaden ):
5) Fall in der switch-Anweisung ( Tutorial ):
6) Methodenreferenzen ( Tutorial )
quelle
assert
"beendet das Programm nicht". Es wirft eineAssertionError
. Das Programm wird nur beendet, wenn es auf den Stapel des einzigen verbleibenden Nicht-Daemon-Threads geworfen wird ... und nicht abgefangen wird.Es gibt keinen "Doppelpunkt" -Operator, aber der Doppelpunkt wird an zwei Stellen angezeigt:
1: Im ternären Operator, z.
In diesem Fall fungiert der ternäre Operator als "Wenn" für Ausdrücke. Wenn bigInt wahr ist, wird x 10000 zugewiesen. Wenn nicht, 50. Der Doppelpunkt bedeutet hier "sonst".
2: In einer for-each-Schleife:
Dies setzt nacheinander x auf jeden der Werte in 'vals'. Wenn also vals [10, 20.3, 30, ...] enthält, ist x bei der ersten Iteration 10, bei der zweiten 20,3 usw.
Hinweis: Ich sage, es ist kein Operator, weil es nur Syntax ist. Es kann nicht in einem bestimmten Ausdruck für sich erscheinen, und es ist nur eine Chance, dass sowohl der for-each- als auch der ternäre Operator einen Doppelpunkt verwenden.
quelle
Nur um hinzuzufügen, kann das ":" bei Verwendung in einer for-each-Schleife grundsätzlich als "in" gelesen werden.
So
sollte gelesen werden "Für jeden Namen IN Namen tun ..."
quelle
Angenommen, das
list
ist eineCollection
Instanz ...Ich sollte den pedantischen Punkt hinzufügen, der
:
in diesem Zusammenhang kein Operator ist. Ein Operator führt eine Operation in einem Ausdruck aus, und das Material( ... )
in einerfor
Anweisung ist kein Ausdruck ... gemäß JLS.quelle
list
eine Instanz von istCollection
. Es muss eine Instanz sein,Iterable
wenn es in der erweiterten for-Schleife verwendet werden kann, was bedeutet, dass es dieiterator()
Methode enthält, die Sie in Ihrer Antwort aufrufen.Es wird in for-Schleifen verwendet, um eine Liste von Objekten zu durchlaufen.
Betrachten Sie es als
for <item> in <list>
in Python.quelle
In Ihrem speziellen Fall
this.list
ist eine Sammlung (Liste, Menge oder Array), und dieser Code wirdc
jedem Element der Sammlung zugewiesen.Wenn also
this.list
eine Sammlung {"2S", "3H", "4S"}cardString
wäre, wäre das am Ende diese Zeichenfolge:quelle
Sie sehen es normalerweise im ternären Zuweisungsoperator.
Syntax
Beispiel:
Das ist "äquivalent" in der Natur zu dem wenn sonst
Andere als Beispiele von verschiedenen Postern,
Sie können auch verwenden:, um eine Bezeichnung für einen Block zu kennzeichnen, die Sie in Verbindung mit continue und break verwenden können.
beispielsweise:
quelle
Die Zeichenfolge "etwas" wird dreimal gedruckt.
quelle
Da die meisten for-Schleifen sehr ähnlich sind, bietet Java eine Verknüpfung, um die Menge an Code zu reduzieren, die zum Schreiben der Schleife erforderlich ist, die für jede Schleife bezeichnet wird.
Hier ist ein Beispiel für die Prägnanz für jede Schleife:
Im obigen Beispiel kann der Doppelpunkt (:) als "in" gelesen werden. Die für jede Schleife insgesamt kann gelesen werden als "für jedes Integer-Element (als Note bezeichnet) in quizGrades den Wert der Note ausdrucken".
quelle
Es wird in der neuen Kurzzeiger für / loop verwendet
und der ternäre Operator
quelle
Der Doppelpunkt existiert tatsächlich in Verbindung mit
?
ist äquivalent zu:
Auch in der für jede Schleife:
buchstäblich:
quelle
Doppelpunkt wird in für jede Schleife verwendet. Versuchen Sie dieses Beispiel.
quelle