Java үш секіру операторын қолдайды - Операторды пайдалану
Java тіліндегі оператор
Оны коммутаторлар мен циклдерде қолданудан басқа , Операторды пайдалану
Кейде циклдің келесі итерациясын ерте бастау пайдалы. Яғни, циклды орындауды жалғастыру керек, бірақ осы нақты итерация үшін оның денесінде codeтың қалған бөлігін өңдеуді тоқтату керек. Шын мәнінде, бұл Оператор
Соңғы бақылау операторы болып табылады
break
, continue
және return
. Олар басқаруды бағдарламаның басқа бөлігіне береді. Операторлардың әрқайсысын егжей-тегжейлі қарастырайық.
Операторды пайдалануbreak
Java тіліндегі оператор break
үш жағдайда қолданылады. Біріншіден, сіз бұрыннан көргендей, ол оператор фorалдарындағы мәлімдемелер тізбегін аяқтайды switch
. Екіншіден, оны циклден шығу үшін пайдалануға болады. Үшіншіден, оны сөзсіз секіру операторының «өркениетті» түрі ретінде қолдануға болады 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 ретке дейінгі мәлімдемелерді орындау үшін жасалғанымен, оператор break
i 4 болғанда оны ертерек аяқтайды. Операторды break
кез келген Java циклімен, соның ішінде әдейі шексіз циклдармен пайдалануға болады. Мысалы, төменде цикл арқылы 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
Оны коммутаторлар мен циклдерде қолданудан басқа , break
оны «өркениетті» нысаны ретінде де қолдануға болады goto
. Java-да оператор жоқ goto
, себебі ол тармақты ерікті және құрылымсыз түрде орындайды. .интенсивті түрде пайдаланатын codeты goto
түсіну және қолдау әдетте қиын. Ол сонымен қатар компилятордың кейбір оңтайландыруларын қайта анықтайды. Дегенмен, бағдарламада goto
басқару ағыны құнды және заңды құрылым болып табылатын бірнеше орын бар. Мысалы, goto
ол терең кірістірілген ілмектер жинағынан шыққан кезде пайдалы болуы мүмкін. Мұндай жағдайларды өңдеу үшін Java операторының кеңейтілген пішімін анықтайды break
. Оны пайдалану арқылы бір немесе бірнеше code блоктарынан шығуға болады. Бұл блоктар циклдің немесе мәлімдеменің бөлігі болуы қажет емес switch
. Бұл кез келген блок болуы мүмкін. Әрі қарай, орындаудың қай жерде жалғасатынын анықтауға болады, себебі бұл пішін break
белгімен жұмыс істейді және goto
оның мәселелерін айналып өтіп, артықшылықтарын береді. Белгіленген мәлімдеменің break
келесі жалпы пішіні бар: break label;
Мұнда label
codeтың кейбір блогын анықтайтын белгінің атауы берілген. Бұл пішін break
орындалған кезде басқару элементі codeтың аталған блогынан (оның белгісі операторда көрсетілген break
) осы блоктан кейінгі операторға ауыстырылады. Белгіленген code блогы осы мәлімдемені қамтуы керек break
, бірақ бұл қосудың тікелей болуы талап етілмейді (яғни, break
оны тікелей өз белгісі бар блокқа емес, оның ішінде кірістірілген блокқа қосуға болады, мүмкін, сондай-ақ белгіленген болуы мүмкін) . break
Бұл кірістірілген блоктар жинағынан шығу үшін белгіленген операторды пайдалануға болатынын білдіреді . break
Бірақ сіз codeты қамтымайтын блокты пайдалана алмайсыз break
. Блокты атау үшін блоктың басына белгіні қойыңыз (ашылатын бұйра жақшаның алдында). Белгі – кез келген жарамды Java идентификаторы, одан кейін қос нүкте. Блокты белгілегеннен кейін оның белгісі операторға аргумент ретінде пайдаланылуы мүмкін break
. Бұл белгіленген блоктың соңынан бастап орындауды жалғастырады. Мысалы, келесі бағдарламада әрқайсысының өз белгісі бар үш кірістірілген блок бар. Оператор екі операторды өткізіп жіберіп break
, белгімен белгіленген блоктың соңынан алға жылжиды . 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.");
}
}
}
Бұл бағдарламаны іске қосу келесі нәтижені шығарады:
Перед оператором 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
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) операторы қажет. Онсыз Java компиляторы «қолжетімсіз code» қатесін жібереді, себебі ол соңғы мәлімдеме println()
ешқашан орындалмайтынын біледі. Бұл қатені болдырмау үшін (t) операторы пайдаланылады if
; ол осы демонстрация үшін компиляторды алдайды. Бастапқы дереккөзге сілтеме: Өтпелі операторлар
GO TO FULL VERSION