Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпори JAVA.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
178.34 Кб
Скачать

45.Іменовані блоки

У реальній практиці , досить часто використовуються вкладені цикли . Відповідно може виникнути ситуація коли з вкладеного циклу потрібно перервати зовнішній . Просте використання break або continue не дозволяє цього завдання , проте в Java можливо іменувати блок коду і явно вказати цим операторам , до якого з них відноситься делаемое дію. Робиться шляхом присвоєння мітки операторам do , while , for . Метка - це будь-яка допустима в даному контексті лексема , що закінчується двокрапкою. Розглянемо наступний приклад ... int array [] [] = { .... } ; for ( int i = 0 ; i < 5 ; i + +) { for ( j = 0 ; j < 4 ; j + +) {... if ( array [ i ] [ j ] == caseValue ) break ; ... }} ...

У даному випадку , при виконанні умови буде перервано виконання циклу по j , цикл

по i продовжиться з наступного значення. Для того , що б перервати виконання обох циклів , використовується раніше згадана мовна конструкція ...

int array [] [] = { .... } ; outerLoop : for ( int i = 0 ; i < 5 ; i + +) { for ( j = 0 ; j < 4 ; j + +) {...

  if ( array [ i ] [ j ] == caseValue ) break outerLoop ; ...} } ... Оператор continue так само може бути використаний з іменованими блокамі.Следует звернути увагу , що при використанні переходу continue на зовнішній блок , його дія схоже з дією break . Тобто виконання поточного блоку буде перервано і керування передасться на зовнішній блок.Прімер . ... Int array [] [] = { .... } ; outerLoop : for ( int i = 0 ; i < 5 ; i + +) { for ( j = 0 ; j < 4 ; j + +) {... if ( array [ i ] [ j ] == caseValue ) continue outerLoop ; ...} } ... і ...

int array [] [] = { .... } ; for ( int i = 0 ; i < 5 ; i + +) { for ( j = 0 ; j < 4 ; j + +) {... if ( array [ i ] [ j ] = = caseValue ) break ; ...} } ... Результат виконання обох варіантів коду буде ідентичним

Між операторами break і continue є ще одна істотна відмінність. Оператор break може бути використаний з будь-яким іменованих блоком , в цьому випадку його дію в чомусь схоже на дію goto . Оператор continue (як і зазначалося раніше ) може бути використаний тільки в тілі циклу. Тобто така конструкція буде цілком прийнятною. lbl : {... if ( val > maxVal ) break lbl ; ...} тоді як оператор continue тут застосовувати не можна. У даному випадку при виконанні умови if , виконання блоку з міткою lbl буде перервано , тобто управління буде передано на оператор (вираз) , наступний безпосередньо за закриває фігурної скобкой.Следует відзначити , що використання оператора goto JAVA заборонено , хоча це слово іявляется зарезервованим . Мітки використовують простір імен , відмінне від простору імен класів , і методів.

Допускається використання міток з однаковими

іменами , але не можна використовувати однакові імена в межах видимості блоку. Тобто

така конструкція допустима

lbl : {... System.out.println ( " Block 1 " ) ;

...} ...

lbl : {...

 System.out.println ( " Block 2") ;

...}

А така немає

lbl : {... lbl : {...

 } ...

}

46. Оператор 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- компілятор видав би помилку " недосяжний код", тому що він знав би , що останній оператор println ( ) ніколи не буде виконуватися. Щоб запобігти зазначену помилку , якраз і використовується оператор if ( t ) він обманює компілятор заради даної демонстрації.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]