Java uchta o'tish operatorini qo'llab-quvvatlaydi Operatordan foydalanish
Java tilidagi operator
Kommutator iboralari va sikllarida ishlatilishidan tashqari , Operatordan foydalanish
Ba'zan tsiklning keyingi iteratsiyasini erta boshlash foydali bo'ladi. Ya'ni, siz tsiklni bajarishni davom ettirishingiz kerak, lekin ushbu iteratsiya uchun uning tanasida qolgan kodni qayta ishlashni to'xtating. Aslida, bu Operator
Oxirgi nazorat bayonoti
break
- continue
va return
. Ular boshqaruvni dasturingizning boshqa qismiga o'tkazadilar. Keling, har bir operatorni batafsil ko'rib chiqaylik.
Operatordan foydalanishbreak
Java tilidagi operator break
uchta holatda qo'llaniladi. Birinchidan, siz allaqachon ko'rganingizdek, u bayonot filiallaridagi bayonotlar ketma-ketligini tugatadi switch
. Ikkinchidan, u halqadan chiqib ketish uchun ishlatilishi mumkin. Uchinchidan, u shartsiz o'tish operatorining "tsivilizatsiyalashgan" shakli sifatida ishlatilishi mumkin goto
. Ushbu bo'lim oxirgi ikki holatni tushuntiradi. break
Davradan chiqish uchun foydalaning dan foydalanib break
, shartli ifodani va tsikl tanasidagi qolgan kodlarni chetlab o‘tib, tsiklni darhol tugatishga majbur qilishingiz mumkin. Agar sikl ichida bayonot break
uchrasa, ikkinchisi tugaydi va dastur boshqaruvi undan keyingi gapga o'tadi. Oddiy misol:
// Использование 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("Цикл завершен.");
}
}
Ushbu dastur quyidagi chiqishni yaratadi:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
Bu yerda sikl for
0 dan 99 martagacha bo'lgan ko'rsatmalarni bajarish uchun mo'ljallangan bo'lsa-da, operator break
i 4 bo'lganda uni erta tugatadi. Operatordan break
Java-ning istalgan tsikllari, jumladan ataylab cheksiz tsikllar bilan foydalanish mumkin. Misol uchun, quyida pastadir yordamida kodlangan oldingi dastur mavjud while
. Ushbu dasturning chiqishi avvalgisi bilan bir xil.
// Использование 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("Цикл завершен.");
}
}
Ichimli tsikllar to'plamida foydalanilganda, bayonot break
faqat eng ichki tsikldan chiqadi. Masalan:
// Использование 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("Цикл завершен.");
}
}
Ushbu dastur quyidagi chiqishni yaratadi:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
Ko'rib turganingizdek, break
ichki tsikldagi bayonot faqat o'sha tsiklning tugashiga olib keladi. Tashqi halqa ta'sir qilmaydi. Keling, bu borada yana ikkita fikr bildiraylik break
. Birinchidan, tsiklda bir nechta iboralar paydo bo'lishi mumkin break
. Biroq, ehtiyot bo'ling. Ularning ko'pchiligi sizning kodingizni buzishga moyildir. Ikkinchidan, break
- operatorini tugatuvchi switch
, faqat berilgan switch
- operatorga ta'sir qiladi (uni o'z ichiga olgan tsikllarga emas). Izoh: Break
loopni tugatishning oddiy vositasi sifatida ishlab chiqilmagan. Bu maqsadga halqa sarlavhasining shartli ifodasi xizmat qiladi. Operator break
faqat muayyan maxsus vaziyatlar yuzaga kelganda halqani buzish uchun ishlatilishi kerak.
break
Shakl sifatida foydalaninggoto
Kommutator iboralari va sikllarida ishlatilishidan tashqari , break
u ning "sivilizatsiyalashgan" shakli sifatida ham ishlatilishi mumkin goto
. Java operatorni o'z ichiga olmaydi, goto
chunki u filialni o'zboshimchalik bilan va tuzilmagan tarzda bajaradi. dan intensiv foydalanadigan kodni goto
tushunish va saqlash odatda qiyin. Bundan tashqari, ba'zi kompilyator optimallashtirishlarini bekor qiladi. Biroq, dasturda goto
boshqaruv oqimi qimmatli va qonuniy tuzilma bo'lgan bir nechta joylar mavjud. Misol uchun, goto
siz chuqur o'rnatilgan halqalar to'plamidan chiqib ketganingizda foydali bo'lishi mumkin. Bunday vaziyatlarni hal qilish uchun Java operatorning kengaytirilgan shaklini belgilaydi break
. Undan foydalanib, siz bir yoki bir nechta kod bloklaridan chiqishingiz mumkin. Ushbu bloklar loop yoki bayonotning bir qismi bo'lishi shart emas switch
. Bu har qanday blok bo'lishi mumkin. Keyinchalik, ijroning qayerda davom etishini aniq belgilashingiz mumkin, chunki bu shakl break
belgi bilan ishlaydi va uning muammolarini chetlab o'tib, afzalliklarini ta'minlaydi goto
. Yorliqli break
bayonot quyidagi umumiy shaklga ega: break label;
Bu erda label
kod blokini aniqlaydigan yorliqning nomi. Ushbu shakl break
bajarilganda, boshqaruv nomlangan kod blokidan (kodning yorlig'i bayonotda ko'rsatilgan break
) ushbu blokdan keyingi operatorga o'tkaziladi. Belgilangan kod bloki ushbu bayonotni o'z ichiga olishi kerak break
, lekin bu qo'shilish to'g'ridan-to'g'ri bo'lishi shart emas (ya'ni, break
uni to'g'ridan-to'g'ri o'z yorlig'i bo'lgan blokga emas, balki uning ichiga joylashtirilgan blokga kiritish mumkin, balki belgilangan bo'lishi mumkin) . break
Bu ichki bloklar to'plamidan qochish uchun belgilangan operatordan foydalanishingiz mumkinligini anglatadi . break
Lekin siz ni o'z ichiga olmagan kod blokidan foydalana olmaysiz break
. Blokka nom berish uchun blokning boshiga (ochiladigan jingalak qavs oldidan) yorliq qo'ying. Yorliq har qanday yaroqli Java identifikatoridan keyin ikki nuqtadan iborat. Blokni belgilagandan so'ng, uning yorlig'i operatorga argument sifatida ishlatilishi mumkin break
. Bu bajarilish belgilangan blokning oxiridan davom etishiga olib keladi. Masalan, quyidagi dastur uchta ichki blokni o'z ichiga oladi, ularning har biri o'z yorlig'iga ega. Operator break
oldinga siljiydi, yorliq bilan belgilangan blokning oxiridan tashqarida second
, ikkita operatorni o'tkazib yuboradi 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.");
}
}
}
Ushbu dasturni ishga tushirish quyidagi natijani yaratadi:
Перед оператором break.
Данный оператор размещен после блока second.
Belgilangan operatorning eng keng tarqalgan qo'llanilishidan biri break
ichki o'tkazgichlardan qochishdir. Masalan, quyidagi dasturda tashqi sikl faqat bir marta bajariladi:
// Использование 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("Цикл завершен.");
}
}
Dastur quyidagi chiqishni yaratadi:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Ko'rinib turibdiki, ichki halqa tashqi ko'chadan oldin uzilib qolsa, ikkala halqa ham tugaydi. Yodda tutingki, siz break
qo'shuvchi blok uchun belgilanmagan yorliqlarga -jump qila olmaysiz. Masalan, quyidagi dastur yaroqsiz va kompilyatsiya qilinmaydi:
// Эта программа содержит ошибку.
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 + " ");
}
}
}
Belgilangan tsikl iborani o'z ichiga olmaydi break
, chunki boshqaruvni ushbu blokga o'tkazish mumkin emas.
Operatordan foydalanishcontinue
Ba'zan tsiklning keyingi iteratsiyasini erta boshlash foydali bo'ladi. Ya'ni, siz tsiklni bajarishni davom ettirishingiz kerak, lekin ushbu iteratsiya uchun uning tanasida qolgan kodni qayta ishlashni to'xtating. Aslida, bu goto
keyingi tana operatsiyalaridan pastadir blokining oxiriga o'tish. Ushbu harakat operator tomonidan amalga oshiriladi continue
. Looplarda while
va do while
operatori continue
boshqaruvni to'g'ridan-to'g'ri tsiklni boshqaruvchi shartli ifodaga o'tkazishga sabab bo'ladi. Davrda for
boshqaruv avval gapning takrorlanuvchi qismiga for
, keyin esa shartli ifodaga o‘tadi. Barcha uchta tsikl uchun har qanday oraliq kod chetlab o'tiladi. continue
Har bir satrda ikkita raqamni chop etish uchun foydalaniladigan dastur misoli quyida keltirilgan:
// Демонстрирует 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 biror narsa tekis yoki yo'qligini tekshirish uchun operatsiyadan (modul) foydalanadi i
. Agar shunday bo'lsa, tsikl yangi satr belgisini chop etmasdan davom etadi. Dastur chiqishi:
0 1
2 3
4 5
6 7
8 9
, operatorida bo'lgani kabi break
, continue
qaysi o'rab olish tsiklini davom ettirish kerakligini ko'rsatadigan yorliqni belgilashingiz mumkin. continue
0 dan 9 gacha bo'lgan uchburchak ko'paytirish jadvalini chop etish uchun foydalaniladigan misol dastur .
// Использование 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();
}
}
Ushbu misoldagi bayonot continue
tsiklni baholashni tugatadi j
va tomonidan boshqariladigan tsiklning keyingi iteratsiyasi bilan davom etadi i
. Ushbu dasturdan olingan natijalar:
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
Bu juda kamdan-kam hollarda foydalidir continue
. Buning sabablaridan biri shundaki, Java ko'pchilik ilovalarga mos keluvchi ko'chma bayonotlarning boy to'plamini taqdim etadi. Biroq, iteratsiyani erta tugatish zarur bo'lgan maxsus vaziyatlar uchun bayonot continue
ushbu vazifani bajarishning tizimli usulini taqdim etadi.
Operatorreturn
Oxirgi nazorat bayonoti return
. U usuldan aniq qaytish uchun ishlatiladi, ya'ni dastur boshqaruvini qayta chaqiruvchi dasturga o'tkazadi. Operator return
o'tish operatori sifatida tasniflanadi. Garchi uning to'liq muhokamasi usullar muhokama qilinmaguncha kutish kerak bo'lsa-da, bu erda qisqacha ma'lumot berilgan return
. Operatordan return
usulni chaqiruvchi dasturga qaytish uchun usulning istalgan joyidan foydalanish mumkin. Bayonot o'zi return
mavjud bo'lgan usulning bajarilishini darhol tugatadi. Quyidagi misol buni ko'rsatadi:
// Демонстрирует return.
public class Return {
public static void main(String[] args) {
boolean t = true;
System.out.println("Перед оператором return.");
if (t) {
return; // возврат в вызывающую программу
}
System.out.println("Этот оператор никогда не выполнится.");
}
}
Bu return
ish vaqtida Java tizimiga qaytadi, chunki u main()
. Ushbu dasturdan olingan natijalar:
Перед оператором return.
Yakuniy bayonot println()
bajarilmaganini sezishingiz mumkin. Bajarish vaqtida return
boshqaruv yana chaqiruvchi dasturga o'tkaziladi. Yakuniy eslatma. Oldingi dasturda if
(t) operatori kerak. println()
Busiz Java kompilyatori "uchun bo'lmaydigan kod" xatosini chiqaradi, chunki u oxirgi bayonot hech qachon bajarilmasligini biladi . Ushbu xatoni oldini olish uchun (t) operatori ishlatiladi if
; u kompilyatorni ushbu namoyish uchun aldaydi. Asl manbaga havola: O'tish operatorlari
GO TO FULL VERSION