Тимур Машнин - Объектно-ориентированное программирование на Java. Платформа Java SE
- Название:Объектно-ориентированное программирование на Java. Платформа Java SE
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:9785005039606
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Тимур Машнин - Объектно-ориентированное программирование на Java. Платформа Java SE краткое содержание
Объектно-ориентированное программирование на Java. Платформа Java SE - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
И для этого мы перейдем к определению метода, где x теперь равно 3.
Это означает, что мы должны заменить все x на 3.
Таким образом, мы вычисляем 3 умножить на 3.
Результат будет – 9, и это то, что возвращает вызов метода.
9 теперь является значением первого операнда суммы.
Затем нам нужно вычислить значение для square (4).
Перейдем к определению метода, но теперь x равно 4.
3 больше не существует.
Поэтому мы заменяем все x на 4, и поэтому умножаем 4 на 4.
Этот вызов метода возвращает 16 вызывающему выражению.
Теперь у нас есть оба операнда, и мы можем сложить 9 и 16.
Во всех этих вычислениях важно отметить, что два вызова одного и того же метода полностью независимы.
Мы использовали x с двумя независимыми значениями.
Сначала 3, а затем 4.
И когда мы использовали 4, 3 уже не существовало.
Каждый раз, когда мы делаем новый вызов, параметры создаются со значениями вызова.
Значения, которые мы имели от предыдущих вызовов, просто забываются.
Мы использовали идентификаторы или имена в разных целях: для переменных, для методов, для параметров метода и т. д.
Теперь возникает вопрос: если у нас есть переменная с именем «x», а затем у нас есть метод с параметром.
Можно ли назвать этот параметр как «х»?
Или будет какая-то несовместимость?
Можем ли мы использовать одно и то же имя в разных контекстах?
Давайте рассмотрим пример.
Представьте, что у нас есть программа, где есть целочисленная переменная с именем x,

Которую мы инициализируем в значение 1.
И у нас также есть метод «f», который имеет целочисленный параметр.
И мы просто решили назвать его «х».
Вопрос, можем ли мы это сделать?
И если да, то что этот метод вернет в качестве результата?
Ответ на этот вопрос при написании кода на Java – да, мы можем это сделать.
Каким образом, мы управляем двумя x?
Каждый x действителен в определенном контексте, при выполнении определенного сегмента кода.
У нас есть черный x, который действителен, и который существует, и для которого мы сохраняем пространство в памяти, когда объявляем переменную.
Мы также зарезервировали пространство в памяти для z.
И когда мы вызываем f с x плюс 1, значение x равно 1.
1 плюс 1 равно 2, и мы вызываем f с 2.
Далее мы переходим к определению метода.
Вызываем f с 2.
Таким образом, красный x равен 2.
Итак, мы выполняем x плюс x со значением 2.
2 плюс 2 равно 4.
И это то, что этот метод возвращает и что хранится в z.
Теперь помните, что параметр x метода f является просто заполнителем.
Поэтому, если f вызывается с переменной x, а значение x равно 2, f с x возвращает 4.
И с этим нет никаких проблем.
Мы говорим, что первое x является глобальной переменной, тогда как параметр x является локальным для метода.
В этом примере мы видим, что эта локальная переменная – этот параметр – создается дважды: во-первых, для внутреннего вызова f с x плюс 1, со значением 2, – и второй раз для внешнего вызова со значением 4.

После выхода из каждого определения метода, созданная переменная будет уничтожена.
И выделенное пространство в памяти компьютера будет освобождено.
Поэтому, если вы хотите использовать внешнюю переменную в теле метода, вы должны выбрать другое имя.
Здесь мы видим, как использовать глобальную переменную x и параметр y в теле метода.

В этом случае у нас есть переменная x, которая видна во всем теле метода и за его пределами, и у нас есть переменная y, которая существует и видна только в теле метода.
Вне этого метода y не существует.
В этом примере, все, что мы только что сказали для параметров метода, применяется к переменным, объявленным внутри тела метода.

Здесь переменная y является локальной переменной в методе f.
В этом методе мы используем глобальную переменную x и локальную переменную y.
Этот пример аналогичен предыдущему.

Но в этом случае мы решили назвать локальную переменную внутри метода x, так же, как и глобальную переменную.
Таким образом, в этом случае у нас нет доступа к глобальной переменной.
Когда мы вызываем f для вычисления z, мы вызываем f, где внутри определяется x со значением 2.
Таким образом, мы возвращаем 2 плюс 2, равно 4.
Метод f всегда возвращает 4.
И это то, что мы сохраним в переменной z.
Таким образом, мы видели, что у нас есть глобальные и локальные переменные.
Глобальные переменные существуют, начиная с объявления и для остальной части программы.
Но они могут временно затеняться другими локальными переменными с тем же именем.
В этом примере показан цикл.

Для циклов также объявляются локальные переменные.
Здесь переменная x цикла for не позволяет нам видеть глобальную переменную при выполнении цикла.
Здесь у нас есть глобальная переменная x и глобальная переменная y.
Они инициализируются 1 и 0 соответственно.
Затем у нас есть глобальная переменная z, которая сохраняет значение y, но после выполнения этого цикла for.
Этот цикл for выполняется дважды.
Один раз для x равного 1 и один раз для x равного 2.
В каждом цикле for, y накапливает значение x.
Таким образом, при первом запуске y получает значение 1, а во втором y получает значение 1 плюс 2, равно 3.
Когда мы выходим из цикла for, локальная переменная x исчезает, остается только глобальная.
y имеет значение 3, и это значение, которое мы сохраняем в z.
Таким образом, мы видим точно такое же поведение для этих переменных в цикле for, как мы видели с локальными переменными в методах и с параметрами в методах.
В этом примере у нас есть глобальная переменная x.

И у нас есть метод с параметром x.
И внутри этого метода у нас есть цикл for с другой переменной x.
Таким образом, в этом случае у нас есть 3 переменных x.
Читать дальшеИнтервал:
Закладка: