Hallo an alle Kollegen und Interessierte.
Heute werden wir uns eine Funktion der Programmiersprache Java wie den Break-Operator ansehen. Dies ist der erste Artikel zum Thema Übergangsoperatoren. Wenn er Ihnen gefällt, schreibe ich gerne mehr. Ich möchte gleich darauf hinweisen, dass dieser Artikel in erster Linie für Anfänger gedacht ist und Fortgeschrittene hier möglicherweise nichts Neues für sich finden. So lass uns gehen. In Java gibt es zwei Möglichkeiten, die Reihenfolge zu ändern, in der Programmanweisungen ausgeführt werden: Sprunganweisungen und Mechanismen zur Ausnahmebehandlung. In Java gibt es drei Sprungoperatoren: Break, Continue und Return. Heute lade ich Sie ein, sich den Betreiber genauer anzusehen
break
. Die Ausnahmebehandlung ist ein so umfassendes Thema, dass es den Rahmen dieses Artikels sprengen würde. Es gibt drei Möglichkeiten, die Break-Anweisung in Java zu verwenden. Die erste und beliebteste Möglichkeit besteht darin, break
die Schleife vorzeitig zu verlassen, zum Beispiel:
public class SimpleExample {
public static void main(String[] args) {
findNumberInLoop(3);
}
public static void findNumberInLoop(int number){
for (int i = 0; i < 10; i++) {
if (i == number) {
break;
}
System.out.println(i);
}
System.out.println("cycle was finished");
}
}
In diesem Beispiel wird Folgendes angezeigt:
1
2
cycle was finished
Dies bedeutet, dass die Schleifenausführung vorzeitig beendet wird, wenn der Schleifenzähler i
gleich dem übergebenen Parameter number
, also der Zahl 3, wird. Wenn das Programm über mehrere verschachtelte Schleifen verfügt, unterbrechen Sie die Ausgaben nur in der innersten Schleife, zum Beispiel:
public class SimpleExample {
public static void main(String[] args) {
findNumberInLoop(3);
}
public static void findNumberInLoop(int number){
for(int i = 0; i < 5; i++) {
for (int j =0; j < 10; j++) {
if(j == number) {
break;
}
System.out.print(j);
}
System.out.println();
}
System.out.println("cycles was finished");
}
}
Dieses Beispiel erzeugt die Ausgabe:
012
012
012
012
012
cycles was finished
Wie aus dem Beispiel hervorgeht, wird die innere Schleife jedes Mal bei der Nummer 3 (Parameter number
) unterbrochen und die äußere Schleife wird wie vorgesehen fünfmal ausgeführt. In Java können Sie mehr als eine Break-Anweisung innerhalb einer Schleife verwenden, dies wird jedoch nicht empfohlen, da die Lesbarkeit und Struktur des Codes dadurch stark beeinträchtigt wird. Die zweite Verwendung break
besteht darin, die Ausführung von Anweisungen in Zweigen zu unterbrechen switch
, zum Beispiel:
public class SimpleExample {
public static void main(String[] args) {
square(2);
}
public static void square(int number){
switch (number){
case 1:
System.out.println(number*number);
break;
case 2:
System.out.println(number*number);
break;
case 3:
System.out.println(number*number);
break;
}
System.out.println("after switch");
}
}
Wenn Sie dieses Beispiel ausführen, wird die Ausgabe erzeugt:
4
after switch
Die break-Anweisung übergab die Kontrolle an den Code, der auf den gesamten Block folgte switch
. break
Wenn Sie in switch
diesem Beispiel nicht angeben :
public class SimpleExample {
public static void main(String[] args) {
square(2);
}
public static void square(int number){
switch (number){
case 1:
System.out.println(number*number);
case 2:
System.out.println(number*number);
case 3:
System.out.println(number*number);
}
System.out.println("after switch");
}
}
Die Ausgabe wird nicht wie erwartet sein:
4
4
after switch
Dies geschah, weil das Programm nach der Ausführung des Blocks mit der Ausführung aller nachfolgenden Case-case 2
Blöcke fortfuhr , was uns die entsprechende Ausgabe lieferte. Manchmal kann diese Funktion des Betreibers für uns von Vorteil sein, zum Beispiel: switch
public class SimpleExample {
public static void main(String[] args) {
compare(2);
compare(7);
compare(12);
}
public static void compare(int number){
switch (number){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("number is less than 5 or equal 5");
break;
case 6:
case 7:
case 8:
case 9:
System.out.println("number is greater than 5");
break;
default:
System.out.println("number is less than 0 or greater than 9");
}
System.out.println("after switch");
}
}
Dieses Programm vergleicht eine gegebene Zahl mit der Zahl 5 und gibt folgende Ausgabe aus:
after switch
number is greater than 5
after switch
number is less than 0 or greater than 9
after switch
Wenn eine Methode zum ersten Mal aufgerufen wird, switch
übergibt der Operator die Kontrolle an den Operator case 2
und dann an den Operator break
in case 5
. Der zweite Aufruf ähnelt dem ersten, beginnt jedoch mit c case 7
. Der dritte Aufruf findet nicht in allen Fällen einen geeigneten Wert, daher wird der Operator ausgeführt default
. break
Die dritte Möglichkeit besteht darin, den Operator anstelle des C-Operators zu verwenden goto
. Dazu verwenden wir eine spezielle Form des Operators, die mit einer Bezeichnung break
aufgerufen wird break
. Dieses Formular sieht aus wie break метка;
ein Label – dies ist normalerweise ein beliebiger geeigneter Name aus dem Java-Namespace, der einem Codeblock vorangestellt ist. Darüber hinaus wird der Code nach dem Anwenden dieses Codeblocks break
mit einer Beschriftung an der Stelle nach dem Block mit der entsprechenden Beschriftung weiter ausgeführt, zum Beispiel:
public class SimpleExample {
public static void main(String[] args) {
howWeUseLabels(true);
System.out.println();
howWeUseLabels(false);
}
public static void howWeUseLabels(boolean bool) {
firstBlock:{
secondBlock:{
thirdBlock:{
System.out.println("We will see it always");
if(bool) {
break secondBlock;
}
System.out.println("We won't see it if bool == true");
}
System.out.println("We won't see it if bool == true");
}
System.out.println("We will see it always");
}
}
}
Dieses Beispiel erzeugt die folgende Ausgabe:
We will see it always
We will see it always
We will see it always
We won't see it if bool == true
We won't see it if bool == true
We will see it always
Nach dem ersten Methodenaufruf break
übergibt der Operator die Kontrolle an das Ende des Blocks secondBlock
, beendet secondBlock
und thirdBlock
und führt println()
am Ende einen anderen Operator aus firstBlock
. Nach dem zweiten Anruf werden alle Leitungen auf dem Bildschirm angezeigt. Etiketten können auch zur Kennzeichnung von Zyklen verwendet werden. Beachten Sie, dass Sie zu einem Label nur innerhalb des durch das Label angegebenen Codeblocks wechseln können. Ein solcher Code lässt sich beispielsweise nicht kompilieren:
public class SimpleExample {
public static void main(String[] args) {
label:{
System.out.println("inside label");
}
if(true) {
break label;
}
System.out.println("This is error");
}
}
Hinweise zur Sauberkeit von Code und Anweisungen break
: Es wird allgemein empfohlen, die Anweisung break
sehr sorgfältig zu verwenden, da die Verwendung break
die Schleife schwieriger zu verstehen macht und den Programmierer dazu zwingt, in die Schleife zu schauen, um die Nuancen ihrer Funktionsweise zu verstehen. Es gibt eine heuristische Regel, die break
Sie in kürzeren Schleifen sicherer und in langen und tief verschachtelten Schleifen mit größerer Vorsicht anwenden können, da dies die Wahrscheinlichkeit von Fehlern erhöht und das Lesen und Verstehen Ihres Codes durch andere Programmierer erschwert. Wie ich oben geschrieben habe, weist die Verwendung einer großen Anzahl von break
. im gesamten Code darauf hin, dass der Programmierer nicht vollständig versteht, warum er seinen Code so geschrieben hat, wie er es getan hat. Es könnte eine Überlegung wert sein, eine solche Schleife umzugestalten, indem man sie in mehrere kleinere Schleifen aufteilt. Seien Sie vorsichtig, wenn Sie break
eine Bezeichnung als Ersatz für verwenden goto
, da dies die Codestruktur verkompliziert. Das ist alles, was ich Ihnen heute über den Operator in Java erzählen wollte break
. Ich freue mich über konstruktive Kritik und bin bei Interesse auch gerne bereit, eine Fortsetzung zum Thema Operatoren continue
und zu schreiben.return
GO TO FULL VERSION