Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Несколько слов по поводу “goto”.




Несколько слов по поводу “goto”.

оператор продолжения continue Позволяет начать новую итерацию цикла не доходя до конца текущую итерацию. По умолчанию итерация относится к телу цикла в котором вызывается оператор. Также можно указать метку блока, с которой начать новую итерацию.   оператор выхода из блока break Позволяет выйти из текущего блока в операторе выбора или из тела цикла. Если указана метка блока, то выходит из того блока.   оператор выхода из метода return Позволяет выйти из тела метода. Если метод должен возвращать значение типа T, то после оператора должно следовать выражение типа T. class MyClass{ // метод возвращающий // наибольшее число int maxint(int arg1, int arg2){ if(arg1< arg2) return arg1; return arg2; }

 

В ЯП Java оператора перехода «goto» нет. И возникает вопрос. Ну хорошо, в принципе в других ЯП, где оператор перехода goto есть, нам тоже всегда говорят, что это плохой оператор, плохой стиль и всегда добавляют, но правда есть одна конструкция, где goto выглядит разумно. Это когда у вас есть цикл, который вкложен в другой цикл на 2 или 3 раза. И вам нужно из внутреннего цикла выйти куда-то во вне. Представте, что у вас три раза вложен цикл, и вы должны сразу выйти из трех циклов. Так вот в ЯП Java goto нет.

Вместо этого они что сделали?

Они использовали break. break является стандартным оператором. break завершает охватывающий цикл. Это нормально – это и в Java, и в C, и где только угодно. Он в switch или в цикле может быть использован.

 

В Java предложели следующее решение. Они сказали: «Мы сделаем break с меткой». А метка, как у всех. Любой идентификатор, ставится двоеточие и метка. Вы можете написать метку (хотите перед первым циклом, хотите перед вторым и т. д. ) и когда срабатывает «break имя_метки», то соответственно завершается его внутренний цикл. Поэтому вы завершить в Java любой вложенный цикл одной командой break с указанием метки, того цикла, который вам нужно завершить.

goto в ЯП Java нет. - Вместо этого используют break с меткой.

There is no “goto” statements in Java, instead we have labeling.

label1: { while(exp1){          while(exp2) {                break label1; // или continue label1 } } }  

Может быть, сходу понять будет сложно, но проблема goto заключалась в том, что мы просто говорили «Иди туда». И вот этими «Иди туда» можно очень серьезно программу запутать. Можно отправить туда, куда ему нельзя переходить на самом деле.

А здесь в break, он не говорит «Иди туда», а говорит «Заверши код помеченной меткой». Т. е. куда переходить и так понятно. Мы не говорим «Иди сюда», а говорим «Заверши блок отмеченной меткой a». И после этого кода, команда начинает выполняться, т. е. мы завершаем отмеченный кусок кода. Это решение более разумно и безопасно.

 

Вопрос: Что у нас еще есть в плане управления программой, кроме break, который завершает?

Ответ: У нас есть еще return. Мы его уже видели и использовали. Он завершает метод.

 

И есть еще один такой странный оператор, который очень редко используется, но он есть. Поэтому когда вы его увидите, то не должны пугаться. Он называется continue. Он используется в циклах, но он завершает не цикл, как break, а совершает текущую итерацию.

 

т. е. здесь я не буду складывать единицы.

 

Если брать языковые конструкции, то мы прошли весь язык, кроме объектно-ориентированной части.

Создание и использование массивов Java – (3 академ. часов)

Наша задача сейчас разобраться с массивами. Очень важно понимать плавность нашего перехода. Дело в том, что мы сейчас будем смотреть массивы, а потом очень часто используемый тип данных – строки. Это уже ссылочные типы данных. Т. е. мы сейчас не просто смотрим массивы, но и начинаем учиться работать с сслочными типами. А уже дальше, когда мы будем писать свои классы – это будут свои ссылочные типы – эта информация нам пригодится.

Ну а массивы я не буду рассказывать зачем они нужны. Они используются везде, потому что для расчетов это очень удобно, а главное с массивами, что приятно? Это часть языка. Есть готовый специальный синтаксис, который позволяет вам создать массив.

Важно понимать некоторые особенности массивов, которые приведены ниже.

Массивы статические массивы Статические массивы поддерживаются на уровне Java синтаксиса. Число элементов указывается явно при создании объекта массива или определяется автоматически при перечислении элементов массива. По умолчанию элементы массива объектов устанавливаются в null, или в 0 для простых типов. Индексация элементов начинается с 0. Размер массива хранится в члене length. динамические массивы Динамические массивы реализованы на уровне параметризованных классов: Vector и ArrayList. Однако в качестве элементов простые типы не могут выступать, только объектные типы. Для управления элементами эти классы используют методы интерфейсов Collection и List: вспомогательные классы Для обработки статических массивов могут пригодится следующие классы: Array - содержит статические методы для создания массивов и доступа к его элементам; Arrays - содержит статические методы для копирования, заполнения, поиска и сортировки массивов.

Массивы, к сожалению, чаще всего реализуются как статические. Это означает, что число элементов массива определено и, в момент выделения памяти, не меняется. И это нормально. А о динамических массивах давайте скажем так. Готовых динамических массивов нет. Т. е. вы можете сами своими руками воплотить их в жизнь, своим кодом. Вы создали массив на 100 элементов и вдруг оказалось, что этого мало. И вот вы видите,  мне бы еще 50 добавить. НЕЛЬЗЯ! Массив – это фиксированный размер памяти. Если вы еще хотите, то создай новый массив и туда перекопируй. Это нормально? Нет, конечно. А если взять Vector или ArrayList? Простите, но это просто коллекции, которые могут быть вам полезны. Любая коллекция, в отличие от массива является динамической. Что это означает? Это значит, что число элементов в ней любое. Можно удалять, добавлять, удалять, добавлять. Она может вам и работу динамического массива воспроизвести, но вы не получите той проиводительности, которую дает сам массив. Вот и все. Поэтому будем считать так. Сами массивы, как они реализованы в языке, - они статические, а все остальное – это наш код или коллекции.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...