Операторы ветвления (if-else).
Операторы ветвления (if-else).
else – необязательная конструкция.
Вопрос: Чему будет равен n в этих случаях?
a = ++n – увеличиваем, затем используем выражение (будет взято n, увеличино, и увеличенный результат положим в a) a = n++ - используем выражение, а потом увеличиваем (будет взято n, присвоено a, а потом увеличино). Что еще про if можно сказать? У вас может m или n принимать значения от 1 до 10. И вы в каждой ситуации должны сделать какое-то конкретное действие. Вы можете написать 10 if подряд. А можем написать вложенное десятикратно условие.
Если условий у нас 10 штук, то может быть вложенный мы еще напишем. А если их больше? Например, 100? То, тогда выбираем switch.
Операторы циклов.
Как во всех ЯП в ЯП Java есть цикл while, есть цикл do…while, есть цикл for. Всё. Вот это стандартный набор ключевых слов, которые включены во всех Си-подобных языках. Здесь представлен цикл while. Условие проверяется до начала цикла. Если условие false, то цикл выполнять не нужно и уходим за тело цикла.
А вот это условие do-while, где условие проверяется в конце. Делаем, делаем, делаем те действия, которые написаны, а потом проверяем условие. Если условие оказалось «ИСТИНА», то возвращаемся в начало цикла, и повторяем выполнение инструкции второй раз. А если «ЛОЖЬ», то выходим за тело цикла.
До этого мы разобрали 2 цикла с while, а теперь разберем 2 цикла с for. Первый цикл – это вообще классика для работы с массивами. Цикл очень удобен тем, когда я знаю, сколько мне нужно сделать итераций. Любой массив имеет фиксированное число элементов. Я могу создать переменную счетчик цикла.
А вот и последний цикл! ЦИКЛ ДЛЯ КОЛЛЕКЦИЙ!
Мои примерчики:
В Java есть такая особенность. Новые ключевые слова в Java очень неудобно добавлять. Что такое новое ключевое слово? Это значит нужно думать, как генерируется байт-код? Ведь что у нас сказано? Вы написали байт-код и он должен работать везде. Представьте, что я написал код. какие-то команды байт-кода у меня изменились, а что это означает? Теперь я должен переписать все виртаульные машины по всему миру, чтобы они понимали новые команды в байт-коде? Вы как себе это представляете? Я никак. Поэтому, изменить саму структуру байт-кода – это по-сути невозможно. Поэтому, зачем придумывать новые ключевые слова, если в байт-коде все тоже самое. Все. Они не стали так делать.
Цикл для коллекций. Понятно, что он генерируется в байт-коде скорее в очень похожем виде, что превращает любой другой язык. Но у вас появляется новый синтаксис, который позволяет вот так коротко и просто обойти все элементы не только массива, но и любой другой коллекции. Это цикл именно для коллекций.
Здесь, конечно, нужно знать, какой тип лежит в коллекции. Но и всё. Этот цикл сам пойдет по всем элементам. Он не будет пытаться брать лишнее. Он никого случайно за бортом не оставит. Он сам завершится, когда пройдет по всем элементам коллекции. Он является достаточно компактным вариантом и работает с разными типами коллекций. Это важно. Это удобно. Это универсально.
При всех своих плюсах, он, конечно, имеет недостатки, потому что он медленнее, чем классический for, потому что он разворачивается немного в другой синтаксис. Дело в том, что здесь, как раз написано. Если вы посмотрите, как это работает, то увидите, что этот цикл работает за счет того, что коллекция реализует специальный интерфейс Iterrable, и там, через методы этого интерфейса нужно попросить текущий элемент, потом сказать перейди на следующий элемент. Т. е. там работа происходит не как в классическом цикле for, а через вызов метода происходит обращение к элементам. А раз вызов метода, то уже имеем накладные расходы.
Он простенько выглядит на поверхности, но технически он реализован иначе. Про интерфейсы мы поговорим, но не сегодня.
Возьмем самый обычный цикл for. На наше счастье, массивы, которые есть в Java содержат внутри себя величину length. Любой массив уже внутри себя содержит свое собственное описание, а именно число элементов. Ставим знак «меньше», а не «меньше или равно». Почему? Мы же с нуля считаем. Если в массиве 100 элементов, то последний элемент будет 99. 99 меньше 100.
Но так никто не пишет! Смотрите, как нужно писать! Будем использовать for для коллекций.
Ради того, чтобы мы увидели упаковку и распаковку, приведем абсолютно безобразный пример.
А зачем упаковывать в Object? У меня же там int’ы! Ну тогда упаковываем в Integer – есть же специальный тип.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|