JavaRush /Java Blogu /Random-AZ /Atlama operatorları
articles
Səviyyə

Atlama operatorları

Qrupda dərc edilmişdir
Java üç atlama operatorunu dəstəkləyir - break, continuereturn. Nəzarəti proqramınızın başqa hissəsinə ötürürlər. Operatorların hər birini ətraflı nəzərdən keçirək. Keçid operatorları - 1

Operatordan istifadə etməkləbreak

Java-da operator breaküç halda istifadə olunur. Birincisi, artıq gördüyünüz kimi, o, bəyanat filiallarında ifadələrin ardıcıllığını bitirir switch. İkincisi, bir döngədən çıxmaq üçün istifadə edilə bilər. Üçüncüsü, qeyd-şərtsiz atlama operatorunun "sivil" forması kimi istifadə edilə bilər goto. Bu bölmə son iki halı izah edir. breakDöngədən çıxmaq üçün istifadə edin -dən istifadə etməklə , breakşərti ifadəni və döngə gövdəsində qalan kodu keçərək dövranı dərhal dayandırmağa məcbur edə bilərsiniz. Döngü daxilində ifadə ilə breakqarşılaşdıqda, ikincisi başa çatır və proqram idarəsi ondan sonrakı ifadəyə keçir. Sadə misal:
// Использование break для выхода из цикла.
public class BreakLoop {

  public static void main(String[] args) {
    for (int i = 0; i < 100; i++) {
      if (i == 4) {
        break; // завершить цикл, если i = 4
      }
      System.out.println("i: " + i);
    }
    System.out.println("Цикл завершен.");
  }
}
Bu proqram aşağıdakı çıxışı yaradır:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
Döngə forburada öz ifadələrini 0-dan 99 dəfə yerinə yetirmək üçün nəzərdə tutulsa da, operator breaki 4 olduqda onun erkən dayandırılmasına səbəb olur. Operator breakJava-nın istənilən dövrələri ilə, o cümlədən qəsdən sonsuz döngələr ilə istifadə edilə bilər. Məsələn, aşağıda bir loop istifadə edərək kodlanmış əvvəlki proqramdır while. Bu proqramın çıxışı sələfi ilə eynidir.
// Использование break для выхода из while-цикла.
public class BreakLoop2 {

  public static void main(String[] args) {
    int i = 0;
    while (i < 100) {
      if (i == 4) {
        break; // закончить цикл, если i = 4
      }
      System.out.println("i: " + i);
      i++;
    }
    System.out.println("Цикл завершен.");
  }
}
İç-içə döngələr dəsti daxilində istifadə edildikdə, ifadə breakyalnız ən daxili döngədən çıxacaq. Misal üçün:
// Использование break во вложенных циклах.
public class BreakLoop3 {

  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.print("Итерация " + i + ": ");
      for (int j = 0; j < 10; j++) {
        if (j == 4) {
          break; // закончить цикл, если j = 4
        }
        System.out.print(j + " ");
      }
      System.out.println();
    }
    System.out.println("Цикл завершен.");
  }
}
Bu proqram aşağıdakı çıxışı yaradır:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
Gördüyünüz kimi, breakdaxili döngədəki ifadə yalnız həmin döngənin dayandırılmasına səbəb olur. Xarici döngə təsirlənmir. Bununla bağlı daha iki şərh verək break. Birincisi, bir döngədə çoxlu ifadələr görünə bilər break. Bununla belə, diqqətli olun. Onların çoxu kodunuzun strukturunu pozmağa meyllidir. İkincisi, break- operatorunu dayandıran switch, yalnız verilmiş switch- operatora təsir göstərir (onu daxil edən döngələrə deyil). Şərh: Breakdöngəni dayandırmaq üçün normal vasitə kimi nəzərdə tutulmamışdır. Bu məqsədə döngə başlığı şərti ifadəsi xidmət edir. Operatordan breakyalnız müəyyən xüsusi vəziyyətlər yarandıqda döngəni qırmaq üçün istifadə edilməlidir.

breakForma kimi istifadə edingoto

Keçid ifadələrində və döngələrdə istifadəsi ilə yanaşı , breako goto, . Java-da operator yoxdur, gotoçünki o, keçidi ixtiyari və struktursuz şəkildə həyata keçirir. . intensiv şəkildə istifadə edən kodu gotobaşa düşmək və saxlamaq adətən çətindir. O, həmçinin bəzi kompilyator optimallaşdırmalarını ləğv edir. Bununla belə, proqramda gotoidarəetmə axınının dəyərli və qanuni quruluş olduğu bir neçə yer var. Məsələn, gotodərin iç-içə döngə dəstindən çıxdığınız zaman faydalı ola bilər. Belə vəziyyətləri idarə etmək üçün Java operatorun genişləndirilmiş formasını təyin edir break. Bundan istifadə edərək, bir və ya bir neçə kod blokundan çıxa bilərsiniz. Bu blokların loop və ya ifadənin bir hissəsi olmasına ehtiyac yoxdur switch. Bu hər hansı bir blok ola bilər. Bundan sonra, icranın harada davam edəcəyini dəqiq müəyyən edə bilərsiniz, çünki bu forma işarə ilə işləyir və problemlərindən yan keçərək breaküstünlükləri təmin edir . gotoEtiketli breakifadə aşağıdakı ümumi formaya malikdir: break label; Burada labelbəzi kod blokunu müəyyən edən etiketin adı verilmişdir. Bu forma breakicra olunduqda, idarə adlanan kod blokundan (ifadədə etiketi göstərilmişdir break) həmin blokdan sonrakı operatora ötürülür. İşarələnmiş kod bloku mütləq bu ifadəni daxil etməlidir break, lakin bu daxiletmənin birbaşa olması tələb olunmur (yəni, o, breakbirbaşa öz etiketi olan bloka deyil, onun içindəki yuvalanmış bloka daxil edilə bilər, bəlkə də işarələnmişdir ). breakBu o deməkdir ki, siz yuvalanmış bloklar dəstindən qaçmaq üçün işarələnmiş operatordan istifadə edə bilərsiniz . breakLakin daxil olmayan kod blokundan istifadə edə bilməzsiniz break. Bloka ad vermək üçün blokun əvvəlinə bir etiket qoyun (açılan buruq mötərizədən əvvəl). Etiket iki nöqtədən sonra hər hansı etibarlı Java identifikatorudur. Blok etiketləndikdən sonra onun etiketi operatora arqument kimi istifadə edilə bilər break. Bu, işarələnmiş blokun sonundan icranın davam etməsinə səbəb olacaq. Məsələn, aşağıdakı proqramda hər birinin öz etiketi olan üç iç-içə blok var. Operator iki operatoru atlayaraq break, etiketlə qeyd olunan blokun sonundan kənara doğru irəliləyir . secondprintln()
// Использование break How цивorзованной формы goto.
public class Break {

  public static void main(String[] args) {
    boolean t = true;
    first:
    {
      second:
      {
        third:
        {
          System.out.println("Перед оператором break.");
          if (t) {
            break second; // выход из блока second
          }
          System.out.println("Данный оператор никогда не выполнится");
        }
        System.out.println("Данный оператор никогда не выполнится ");
      }
      System.out.println("Данный оператор размещен после блока second.");
    }
  }
}
Bu proqramı işə salmaq aşağıdakı nəticəni yaradır:
Перед оператором break.
Данный оператор размещен после блока second.
İşarələnmiş operatorun ən çox yayılmış istifadələrindən biri breakiç-içə döngələrdən qaçmaqdır. Məsələn, aşağıdakı proqramda xarici dövrə yalnız bir dəfə yerinə yetirilir:
// Использование break для выхода из вложенных циклов.
public class BreakLoop4 {

  public static void main(String[] args) {
    outer:
    for (int i = 0; i < 3; i++) {
      System.out.print("Итерация " + i + ": ");
      for (int j = 0; j < 100; j++) {

        if (j == 10) {
          break outer; // выйти из обоих циклов
        }
        System.out.print(j + " ");
      }
      System.out.println("Эта строка никогда не будет выведена");
    }
    System.out.println("Цикл завершен.");
  }
}
Proqram aşağıdakı çıxışı yaradır:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Daxili döngə xarici döngənin sonundan əvvəl kəsildikdə, hər iki döngənin bitdiyini görmək asandır. Nəzərə alın ki, siz breakəlavə blok üçün təyin olunmayan hər hansı bir etiketə keçid edə bilməzsiniz. Məsələn, aşağıdakı proqram etibarsızdır və tərtib edilməyəcək:
// Эта программа содержит ошибку.
public class BreakErr {

  public static void main(String[] args) {
    one:
    for (int i = 0; i < 3; i++) {
      System.out.print("Итерация " + i + ": ");
    }
    for (int j = 0; j < 100; j++) {
      if (j == 10) {
        break one; //He верно!
      }
      System.out.print(j + " ");
    }
  }
}
İşarələnmiş dövrə ifadəni ehtiva etmədiyi üçün breakidarəetməni bu bloka ötürmək mümkün deyil.

Operatordan istifadə etməkləcontinue

Bəzən döngənin növbəti iterasiyasını erkən başlamaq faydalıdır. Yəni, siz döngəni icra etməyə davam etməlisiniz, lakin bu xüsusi iterasiya üçün kodun qalan hissəsini onun gövdəsində emal etməyi dayandırın. Əslində, bu, gotonövbəti bədən əməliyyatlarından döngə blokunun sonuna keçiddir. Bu hərəkət operator tərəfindən həyata keçirilir continue. Döngələrdə whiledo whileoperatoru continueidarəetmənin birbaşa dövrəni idarə edən şərti ifadəyə ötürülməsinə səbəb olur. Döngədə foridarəetmə əvvəlcə ifadənin iterativ hissəsinə for, sonra isə şərti ifadəyə keçir. Hər üç döngə üçün hər hansı bir ara kod keçilir. continueHər bir sətirdə iki ədədi çap etmək üçün istifadə olunan proqram nümunəsi aşağıda verilmişdir:
// Демонстрирует continue.
public class Continue {

  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.print(i + " ");
      if (i % 2 == 0) {
        continue;
      }
      System.out.println("");
    }
  }
}
%Bu kod bir şeyin bərabər olub olmadığını yoxlamaq üçün əməliyyatdan (modul) istifadə edir i. Əgər belədirsə, döngə yeni sətir simvolu çap etmədən davam edir. Proqram çıxışı:
0 1
2 3
4 5
6 7
8 9
, operatorunda olduğu kimi break, continuehansı qapalı döngənin davam edəcəyini göstərən etiket təyin edə bilərsiniz. continue0-dan 9-a qədər üçbucaqlı vurma cədvəlini çap etmək üçün istifadə edən nümunə proqram .
// Использование continue с меткой.
public class ContinueLabel {

  public static void main(String[] args) {
    outer:
    for (int i = 0; i < 10; i++) {
      for (int j = 0; j < 10; j++) {
        if (j > i) {
          System.out.println();
          continue outer;
        }
        System.out.print(" " + (i * j));
      }
    }
    System.out.println();
  }
}
Bu misaldakı ifadə continuedövrənin qiymətləndirilməsini bitirir jvə tərəfindən idarə olunan döngənin növbəti iterasiyası ilə davam edir i. Bu proqramdan çıxış:
0
 0 1
 0 2 4
 0 3 6 9
 0 4 8 12 16
 0 5 10 15 20 25
 0 6 12 18 24 30 36
 0 7 14 21 28 35 42 49
 0 8 16 24 32 40 48 56 64
 0 9 18 27 36 45 54 63 72 81
Çox nadir hallarda faydalıdır continue. Bunun səbəblərindən biri Java-nın əksər tətbiqlərə uyğun olan zəngin çevrə ifadələri dəsti təqdim etməsidir. Bununla belə, təkrarlamanı erkən dayandırmaq lazım olan xüsusi vəziyyətlər üçün bəyanat continuebu tapşırığı yerinə yetirmək üçün strukturlaşdırılmış bir yol təqdim edir.

Operatorreturn

Son nəzarət bəyanatıdır return. Bir metoddan açıq şəkildə qayıtmaq üçün istifadə olunur, yəni proqramın idarəsini yenidən çağıran proqrama köçürür. Operator returnkeçid operatoru kimi təsnif edilir. Baxmayaraq ki, onun tam müzakirəsi metodlar müzakirə olunana qədər gözləməli olsa da, burada qısa icmal verilir return. Operator returnmetodu çağıran proqrama qayıtmaq üçün metodun istənilən yerində istifadə edilə bilər. Bəyanat returniçində olduğu metodun icrasını dərhal bitirir. Aşağıdakı misal bunu göstərir:
// Демонстрирует return.
public class Return {

  public static void main(String[] args) {
    boolean t = true;
    System.out.println("Перед оператором return.");
    if (t) {
      return; // возврат в вызывающую программу
    }
    System.out.println("Этот оператор никогда не выполнится.");
  }
}
Bu, returnişləmə zamanı Java sisteminə qayıdır, çünki main(). Bu proqramdan çıxış:
Перед оператором return.
println()Son bəyanatın icra olunmadığını görə bilərsiniz . İcra zamanı returnnəzarət yenidən çağıran proqrama ötürülür. Son bir qeyd. Əvvəlki proqramda if(t) operatoru lazımdır. Bu olmadan, Java tərtibçisi "əlçatmaz kod" xətası verərdi, çünki o, sonuncu ifadənin println()heç vaxt yerinə yetirilməyəcəyini bilirdi. Bu xətanın qarşısını almaq üçün (t) operatorundan istifadə olunur if; bu nümayiş üçün kompilyatoru aldadır. Orijinal mənbəyə keçid: Keçid operatorları
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION