Java üç atlama operatorunu dəstəkləyir - Operatordan istifadə etməklə
Java-da operator
Keçid ifadələrində və döngələrdə istifadəsi ilə yanaşı , Operatordan istifadə etməklə
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, Operator
Son nəzarət bəyanatıdır
break
, continue
və return
. 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.
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. break
Dö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ə break
qarşı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ə for
burada öz ifadələrini 0-dan 99 dəfə yerinə yetirmək üçün nəzərdə tutulsa da, operator break
i 4 olduqda onun erkən dayandırılmasına səbəb olur. Operator break
Java-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ə break
yalnı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, break
daxili 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: Break
dö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 break
yalnız müəyyən xüsusi vəziyyətlər yarandıqda döngəni qırmaq üçün istifadə edilməlidir.
break
Forma kimi istifadə edingoto
Keçid ifadələrində və döngələrdə istifadəsi ilə yanaşı , break
o goto
, . Java-da operator yoxdur, goto
çünki o, keçidi ixtiyari və struktursuz şəkildə həyata keçirir. . intensiv şəkildə istifadə edən kodu goto
baş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 goto
idarəetmə axınının dəyərli və qanuni quruluş olduğu bir neçə yer var. Məsələn, goto
də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 . goto
Etiketli break
ifadə aşağıdakı ümumi formaya malikdir: break label;
Burada label
bəzi kod blokunu müəyyən edən etiketin adı verilmişdir. Bu forma break
icra 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, break
birbaşa öz etiketi olan bloka deyil, onun içindəki yuvalanmış bloka daxil edilə bilər, bəlkə də işarələnmişdir ). break
Bu o deməkdir ki, siz yuvalanmış bloklar dəstindən qaçmaq üçün işarələnmiş operatordan istifadə edə bilərsiniz . break
Lakin 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 . second
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.");
}
}
}
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 break
iç-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 break
idarə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, goto
nö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ə while
və do while
operatoru continue
idarəetmənin birbaşa dövrəni idarə edən şərti ifadəyə ötürülməsinə səbəb olur. Döngədə for
idarə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. continue
Hə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
, continue
hansı qapalı döngənin davam edəcəyini göstərən etiket təyin edə bilərsiniz. continue
0-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ə continue
dövrənin qiymətləndirilməsini bitirir j
və 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 continue
bu 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 return
keç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 return
metodu çağıran proqrama qayıtmaq üçün metodun istənilən yerində istifadə edilə bilər. Bəyanat return
iç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, return
iş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ı return
nə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ı
GO TO FULL VERSION