JavaRush /Blog Jawa /Random-JV /Operator Langsung
articles
tingkat

Operator Langsung

Diterbitake ing grup
Jawa ndhukung telung operator lompat - break, continuelan return. Dheweke nransfer kontrol menyang bagean liyane saka program sampeyan. Ayo nimbang saben operator kanthi rinci. Operator transisi - 1

Nggunakake operatorbreak

Operator breaking Jawa digunakake ing telung kasus. Pisanan, kaya sing wis sampeyan deleng, iki mungkasi urutan statement ing cabang statement switch. Kapindho, iku bisa digunakake kanggo break metu saka daur ulang. Katelu, bisa digunakake minangka wangun "beradab" saka operator lompat tanpa syarat goto. Bagian iki nerangake rong kasus pungkasan. Gunakake breakkanggo metu saka daur ulang Kanthi nggunakake break, sampeyan bisa meksa daur ulang kanggo siksa langsung, bypassing expression kondisional lan kode isih ing awak daur ulang. Nalika statement breakditemoni ing daur ulang, sing kapindho rampung lan kontrol program ditransfer menyang statement sing ngetutake. Tuladha prasaja:
// Использование 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("Цикл завершен.");
  }
}
Program iki ngasilake output ing ngisor iki:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
Senajan daur ulang fordirancang kene kanggo nglakokaké statements saka 0 kanggo 99 kaping, operator breaknimbulaké siksa awal nalika i 4. Operator breakbisa digunakake karo sembarang puteran Jawa, kalebu puteran sengojo tanpa wates. Contone, ing ngisor iki program sadurunge dikode nggunakake loop while. Output program iki padha karo sing sadurunge.
// Использование 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("Цикл завершен.");
  }
}
Nalika digunakake ing sakumpulan puteran nested, statement breakmung bakal metu saka loop paling jero. Tuladhane:
// Использование 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("Цикл завершен.");
  }
}
Program iki ngasilake output ing ngisor iki:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
Nalika sampeyan bisa ndeleng, statement breaking daur ulang utama mung nyebabake loop kasebut mandheg. Lingkaran njaba ora kena pengaruh. Ayo kita nggawe rong komentar liyane babagan break. Kaping pisanan, macem-macem statement bisa katon ing loop break. Nanging, ati-ati. Kakehan sing cenderung ngrusak kode sampeyan. Kapindho, ing break, kang terminates ing - operator switch, mengaruhi mung diwenehi switch- operator (lan ora puteran sing kalebu). Komentar: Breakora dirancang minangka cara normal kanggo mungkasi loop. Tujuan iki diwenehake dening ekspresi kondisional header loop. Operator breakkudu mung digunakake kanggo break daur ulang nalika ana kahanan khusus tartamtu.

Gunakake breakminangka wangungoto

Saliyane digunakake ing statement switch lan puteran, breakuga bisa digunakake piyambak minangka wangun "beradab" saka goto. Jawa ora ngemot operator gotoamarga nindakake cabang kanthi cara sing sewenang-wenang lan ora terstruktur. Kode sing nggunakake .intensif gotobiasane angel dimangerteni lan dijaga. Iku uga overrides sawetara optimizations compiler. Nanging, ana sawetara panggonan ing program sing gotoaliran kontrol minangka konstruksi sing sah lan sah. Contone, gotobisa migunani nalika sampeyan ngeculake set puteran sing akeh banget. Kanggo nangani kahanan kaya mengkono, Jawa nemtokake wangun lengkap operator break. Nggunakake, sampeyan bisa metu saka siji utawa luwih blok kode. Pamblokiran iki ora perlu dadi bagéan saka loop utawa statement switch. Iki bisa dadi blok apa wae. Sabanjure, sampeyan bisa nemtokake persis ing ngendi eksekusi bakal diterusake amarga formulir iki breakbisa digunakake kanthi tandha lan menehi keuntungan saka goto, ngliwati masalah kasebut. A breakstatement labeled wis wangun umum ing ngisor iki: break label; Punika labeljeneng label sing ngenali sawetara pemblokiran kode. Nalika formulir iki breakdieksekusi, kontrol ditransfer saka blok kode sing dijenengi (sing label kasebut ditemtokake ing statement break) menyang statement sawise blok kasebut. Blok kode sing ditandhani kudu kalebu statement iki break, nanging ora diwajibake yen inklusi iki langsung (yaiku, breakbisa uga ora langsung dilebokake ing blok kanthi label dhewe, nanging ing blok bersarang, bisa uga ditandhani. ). Iki tegese sampeyan bisa nggunakake operator sing ditandhani breakkanggo uwal saka set pamblokiran nested. Nanging sampeyan ora bisa nggunakake breakblok kode sing ora kalebu break. Kanggo menehi jeneng blok, pasang label ing wiwitan blok (sadurunge bukaan kurung kriting). Label yaiku sembarang pengenal Jawa sing sah diikuti titik loro. Sawise menehi label blok, label kasebut bisa digunakake minangka argumen kanggo operator break. Iki bakal nyebabake eksekusi terus saka mburi blok sing ditandhani. Contone, program ing ngisor iki ngemot telung blok nested, saben duwe label dhewe. Operator breakmaju, ngluwihi mburi blok sing ditandhani label second, ngliwati rong operator println().
// Использование 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.");
    }
  }
}
Mbukak program iki ngasilake output ing ngisor iki:
Перед оператором break.
Данный оператор размещен после блока second.
Salah sawijining panggunaan sing paling umum saka operator sing diwenehi label breakyaiku kanggo uwal saka puteran nested. Contone, ing program ing ngisor iki loop njaba dieksekusi mung sapisan:
// Использование 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("Цикл завершен.");
  }
}
Program ngasilake output ing ngisor iki:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Iku gampang kanggo ndeleng yen puteran njero diselani sadurunge mburi njaba, loro puteran mungkasi. Elinga yen sampeyan ora bisa nindakake break-mlumpat menyang label sing ora ditetepake kanggo pemblokiran enclosing. Contone, program ing ngisor iki ora sah lan ora bakal dikompilasi:
// Эта программа содержит ошибку.
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 + " ");
    }
  }
}
Amarga daur ulang sing ditandhani ora kalebu statement break, ora bisa nransfer kontrol menyang blok iki.

Nggunakake operatorcontinue

Kadhangkala migunani kanggo miwiti pengulangan sabanjure saka daur ulang luwih awal. Yaiku, sampeyan kudu terus nglakokake daur ulang, nanging mandheg ngolah kode liyane ing awak kanggo pengulangan tartamtu iki. Nyatane, iki minangka gototransisi liwat operasi awak sabanjure menyang mburi blok loop. Tindakan iki ditindakake dening operator continue. Ing puteran, operator whilelan nyebabake kontrol ditransfer langsung menyang ekspresi kondisional sing ngontrol loop. Ing daur ulang, kontrol liwati dhisik menyang bagean iteratif saka statement lan banjur menyang ekspresi kondisional. Kanggo kabeh telung puteran, sembarang kode penengah dilewati. Conto program sing digunakake kanggo nyithak rong nomer ing saben baris diwenehi ing ngisor iki: do whilecontinueforforcontinue
// Демонстрирует 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("");
    }
  }
}
Kode iki nggunakake operasi %(modulo) kanggo mriksa apa ana sing imalah. Yen mangkono, loop terus tanpa nyetak karakter baris anyar. Output program:
0 1
2 3
4 5
6 7
8 9
Kaya operator break, continuesampeyan bisa nemtokake label sing nuduhake loop sing bakal diterusake. Program conto sing digunakake continuekanggo nyithak tabel perkalian segitiga saka 0 nganti 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();
  }
}
Ing statement continueing conto iki ends daur ulang ngevaluasi j, lan terus karo pengulangan sabanjuré daur ulang mimpin dening i. Output saka program iki:
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
Iku arang banget migunani continue. Salah sawijining alesan kanggo iki yaiku Jawa nyedhiyakake pirang-pirang pernyataan looping sing cocog karo umume aplikasi. Nanging, kanggo kahanan khusus sing kudu mungkasi pengulangan luwih awal, pratelan kasebut continuenyedhiyakake cara terstruktur kanggo ngrampungake tugas iki.

Operatorreturn

Pranyatan kontrol pungkasan yaiku return. Iki digunakake kanggo kanthi tegas bali saka cara, yaiku, transfer kontrol program bali menyang program panggilan. Operator kasebut returndiklasifikasikake minangka operator transisi. Sanajan diskusi lengkap kudu ngenteni nganti metode kasebut dibahas, ringkesan ringkes diwenehake ing kene return. Operator returnbisa digunakake ing ngendi wae ing cara kanggo mlumpat bali menyang program nelpon cara. Pernyataan kasebut returnlangsung mungkasi eksekusi metode kasebut. Conto ing ngisor iki nggambarake iki:
// Демонстрирует return.
public class Return {

  public static void main(String[] args) {
    boolean t = true;
    System.out.println("Перед оператором return.");
    if (t) {
      return; // возврат в вызывающую программу
    }
    System.out.println("Этот оператор никогда не выполнится.");
  }
}
Iki returnbali menyang sistem Jawa nalika runtime, amarga iku sistem sing nelpon main(). Output saka program iki:
Перед оператором return.
Sampeyan bisa uga sok dong mirsani sing statement final println()ora kaleksanan. Ing wektu eksekusi, returnkontrol ditransfer bali menyang program panggilan. Siji cathetan pungkasan. Ing program sadurunge, ifoperator (t) perlu. Tanpa iku, compiler Jawa bakal unreachable "kode" kesalahan amarga bakal ngerti sing statement pungkasan println()ora bakal kaleksanan. Kanggo nyegah kesalahan iki, operator (t) digunakake if; iku ngapusi kompiler kanggo demonstrasi iki. Link menyang sumber asli: Operator transisi
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION