JavaRush /Java блогу /Random-KY /Секирүү операторлору
articles
Деңгээл

Секирүү операторлору

Группада жарыяланган
Java үч секирүү операторун колдойт - break, continueжана return. Алар башкарууну программаңыздын башка бөлүгүнө өткөрүп беришет. Келгиле, ар бир операторду майда-чүйдөсүнө чейин карап көрөлү. Өткөөл операторлор - 1

Операторду колдонууbreak

Java тorндеги оператор breakүч учурда колдонулат. Биринчиден, сиз буга чейин көргөндөй, ал билдирүүлөрдүн ырааттуулугун аяктайт switch. Экинчиден, аны циклден чыгуу үчүн колдонсо болот. Үчүнчүдөн, аны шартсыз секирүү операторунун "цивorзациялуу" формасы катары колдонсо болот goto. Бул бөлүмдө акыркы эки жагдай түшүндүрүлөт. breakЦиклден чыгуу үчүн колдонуңуз Колдонуу менен break, сиз циклди шарттуу туюнтманы жана цикл денесиндеги калган codeду кыйгап өтүп, дароо токтотууга мажбурлай аласыз. Циклдин ичинде оператор breakкездешкенде, экинчиси аяктайт жана программанын башкаруусу андан кийинки операторго өтөт. Жөнөкөй мисал:
// Использование 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("Цикл завершен.");
  }
}
Бул программа төмөнкү натыйжаны түзөт:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
Цикл forбул жерде 0дөн 99 жолуга чейин өзүнүн операторлорун аткаруу үчүн иштелип чыкканы менен, оператор breaki 4 болгондо анын эрте бүтүшүнө себеп болот. Оператор breakJava циклдеринин каалаганы менен, анын ичинде атайылап чексиз циклдер менен колдонулушу мүмкүн. Мисалы, төмөндө цикл аркылуу codeдолгон мурунку программа болуп саналат while. Бул программанын натыйжасы анын мурунку программасына окшош.
// Использование 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("Цикл завершен.");
  }
}
Уюшкан циклдердин жыйындысында колдонулганда, билдирүү breakэң ички циклден гана чыгат. Мисалы:
// Использование 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("Цикл завершен.");
  }
}
Бул программа төмөнкү натыйжаны түзөт:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
Көрүнүп тургандай, breakички циклдеги билдирүү ошол циклди гана токтотууга алып келет. Сырткы цикл таасир этпейт. Буга байланыштуу дагы эки комментарий берели break. Биринчиден, циклде бир нече билдирүүлөр пайда болушу мүмкүн break. Бирок, сак болгула. Алардын көбү сиздин codeуңузду бузушат. Экинчиден, break- операторун токтоткон switch, берилген switch- операторуна гана таасир этет (аны камтыган циклдерге эмес). Комментарий: Breakциклди токтотуунун кадимки каражаты катары иштелип чыккан эмес. Бул максатка цикл башынын шарттуу туюнтмасы кызмат кылат. Оператор breakбелгилүү бир өзгөчө кырдаалдар пайда болгондо гана циклди бузуу үчүн колдонулушу керек.

breakФорма катары колдонуңузgoto

Ал коммутаторлордо жана циклдерде колдонулгандан тышкары , . Java операторду камтыbyte , анткени ал фorалды ыктыярдуу жана структурасыз түрдө аткарат. .интенсивдүү колдонгон codeду түшүнүү жана сактоо адатта кыйынга турат. Ал ошондой эле кээ бир компилятордун оптималдаштырууларын жокко чыгарат. Бирок, программада башкаруу агымы баалуу жана мыйзамдуу түзүлүш болуп саналган бир нече жерлер бар. Мисалы, сиз терең уяланган циклдерден чыгып жатканда пайдалуу болушу мүмкүн. Мындай жагдайларды чечүү үчүн Java оператордун кеңейтилген формасын аныктайт . Аны колдонуу менен сиз codeдун бир же бир нече блогунан чыга аласыз. Бул блоктор циклдин же билдирүүнүн бөлүгү болбошу керек . Бул кандайдыр бир блок болушу мүмкүн. Андан кийин, сиз аткаруунун кайсы жерде уланарын так аныктай аласыз, анткени бул форма белги менен иштейт жана анын көйгөйлөрүн айланып өтүү менен артыкчылыктарды берет. Белгиленген билдирүү төмөнкү жалпы формага ээ: Бул жерде codeдун кээ бир блогун аныктаган энбелгинин аты. Бул форма аткарылганда башкаруу codeдун аталган блогунан (анын энбелгиси билдирүүдө көрсөтүлгөн ) ошол блоктон кийинки операторго өткөрүлүп берилет. Белгиленген code блогу бул билдирүүнү камтууга тийиш , бирок бул кошуу түз болушу талап кылынbyte (башкача айтканда, аны түздөн-түз өзүнүн энбелгиси бар блокко эмес, анын ичинде уя салынган блокко кошууга болот, балким, ошондой эле белгиленген) . Бул уя салынган блоктордун топтомунан кутулуу үчүн белгиленген операторду колдоно аласыз дегенди билдирет . Бирок сиз камтыбаган code блогун колдоно албайсыз . Блокту атоо үчүн блоктун башына энбелги коюңуз (ачуучу тармал кашаанын алдында). Энбелги – бул Java идентификаторунан кийин эки чекит коюлган жарактуу. Блокту белгилөөдөн кийин анын энбелгиси операторго аргумент катары колдонулушу мүмкүн . Бул белгиленген блоктун аягынан баштап аткарууну улантат. Мисалы, төмөнкү программа үч уяча блокторду камтыйт, алардын ар бири өзүнүн энбелгиси менен. Оператор эки операторду өткөрүп жиберип, энбелгиси менен белгиленген блоктун аягынан ашып , алдыга жылат . breakgotogotogotogotogotobreakswitchbreakgotobreakbreak label;labelbreakbreakbreakbreakbreakbreakbreakbreakbreaksecondprintln()
// Использование 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.");
    }
  }
}
Бул программаны иштетүү төмөнкү натыйжаны жаратат:
Перед оператором break.
Данный оператор размещен после блока second.
Белгиленген оператордун кеңири колдонулушунун бири breakбул уяланган циклдерден качуу. Мисалы, төмөнкү программада тышкы цикл бир гана жолу аткарылат:
// Использование 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("Цикл завершен.");
  }
}
Программа төмөнкү натыйжаларды чыгарат:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Ички цикл сырткы циклдин аягына чейин үзүлгөндө, эки илмек тең бүтөөрүн көрүү оңой. breakКоштоочу блок үчүн аныкталбаган кандайдыр бир белгиге -jump кыла албасыңызды унутпаңыз . Мисалы, төмөнкү программа жараксыз жана компиляция болбойт:
// Эта программа содержит ошибку.
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 + " ");
    }
  }
}
Белгиленген цикл операторду камтыбагандыктан break, башкарууну бул блокко өткөрүү мүмкүн эмес.

Операторду колдонууcontinue

Кээде циклдин кийинки итерациясын эрте баштоо пайдалуу. Башкача айтканда, циклди аткарууну улантышыңыз керек, бирок ушул конкреттүү итерация үчүн анын денесиндеги codeдун калган бөлүгүн иштетүүнү токтотуңуз. Чынында, бул gotoцикл блогунун аягына кийинки дене операцияларынан өткөн өтүү. Бул аракет оператор тарабынан жүзөгө ашырылат continue. Циклдерде whileжана do whileоператору continueбашкарууну циклди башкарган шарттуу туюнтмага түздөн-түз өткөрүп берет. Циклде forбашкаруу адегенде оператордун кайталануучу бөлүгүнө for, андан кийин шарттуу туюнтмага өтөт. Бардык үч цикл үчүн ар кандай аралык code айланып өтөт. Ар бир сапта эки санды басып чыгаруу үчүн колдонулган мисал программасы continueтөмөндө келтирилген:
// Демонстрирует 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("");
    }
  }
}
%Бул code бир нерсенин жуп экенин текшерүү үчүн операцияны (модуль) колдонот i. Андай болсо, цикл жаңы саптын символун басып чыгарбастан уланат. Программанын жыйынтыгы:
0 1
2 3
4 5
6 7
8 9
, операторундагыдай эле break, continueсиз кайсы курчоо циклин улантуу керектигин көрсөткөн белгини аныктай аласыз. continueҮч бурчтуу көбөйтүү tableсын 0дөн 9га чейин басып чыгаруу үчүн колдонулган мисал программа .
// Использование 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();
  }
}
Бул мисалдагы билдирүү continueциклды баалоону аяктайт jжана циклдин кийинки итерациясы менен уланат i. Бул программанын натыйжасы:
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
Бул өтө сейрек пайдалуу continue. Мунун бир себеби, Java көпчүлүк колдонмолорго ылайыктуу циклдик билдирүүлөрдүн бай топтомун камсыз кылат. Бирок, итерацияны эрте токтотуу зарыл болгон өзгөчө кырдаалдар үчүн билдирүү continueбул тапшырманы аткаруунун структуралык жолун камсыз кылат.

Операторreturn

Акыркы контролдук билдирүү болуп саналат return. Ал ыкмадан ачык кайтып келүү үчүн колдонулат, башкача айтканда, программаны башкарууну кайра чакырган программага өткөрүп берет. Оператор returnөткөөл оператор катары классификацияланат. Анын толук талкуусу ыкмалары талкууланганга чейин күтүшү керек болсо да, бул жерде кыскача маалымат берилген return. Оператор returnметодду чакырган программага кайра секирүү үчүн методдун каалаган жеринде колдонулушу мүмкүн. Билдирме returnошол замат ал колдонулган ыкманын аткарылышын токтотот. Муну төмөнкү мисал көрсөтүп турат:
// Демонстрирует return.
public class Return {

  public static void main(String[] args) {
    boolean t = true;
    System.out.println("Перед оператором return.");
    if (t) {
      return; // возврат в вызывающую программу
    }
    System.out.println("Этот оператор никогда не выполнится.");
  }
}
Бул returnиштөө убагында Java тутумуна кайтып келет, анткени ал main(). Бул программанын натыйжасы:
Перед оператором return.
Сиз акыркы билдирүү println()аткарылбаганын байкасаңыз болот. Аткаруу убагында returnбашкаруу кайра чакыруучу программага өткөрүлүп берилет. Бир акыркы эскертүү. Мурунку программада if(t) оператору зарыл. println()Ансыз Java компилятору "жетишсиз code" катасын чыгарат, анткени ал акыркы билдирүү эч качан аткарылбай турганын билет . Бул катаны болтурбоо үчүн, (t) оператору колдонулат if; бул көрсөтүү үчүн компиляторду алдайт. Түпнуска булакка шилтеме: Өткөөл операторлор
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION