Объявление, инициализация и область видимости переменных
В этой статье мы поговорим с Вами более детально о переменных в языке Java.
1. Объявление переменных в Java и их инициализация
Java переменные - это основной элемент хранения информации в Java-программе.
Прежде чем использовать переменную, её необходимо объявить. Мы пишем её тип и имя переменной с помощью какого-то идентификатора, например:
int max;// Объявляет число max Здесь мы просто объявили переменную max, и сейчас её значение равно значению по умолчанию. Для int - это ноль. Чуть позже в программе переменную можно проинициализировать:
max = 89;// Инициализирует число max Но, конечно же, это лучше делать не следующей строчкой.
Если нам требуется объявить несколько переменных заданного типа, это можно сделать в виде разделённого запятыми списка имён переменных:
int count = 0, min = 6;// Объявляет два целых числа count и min Переменная может быть инициализирована при объявлении:
double d = 2.3;// Объявляет число d и инициализирует его Инициализирующее выражение, то есть, то что мы пишем после равно, должно возвращать значение того же самого или совместимого типа, что и у объявленной нами переменной. Что такое совместимый тип мы узнаем в одном из наших следующих уроков - Преобразование и приведение примитивных типов.
Java - строго типизированный язык, то есть каждая переменная Java имеет какой-то конкретный тип. Тип переменной определяет:
- размер и размещение её в памяти,
- диапазон значений, которые могут храниться в памяти,
- набор операций, которые могут быть применены к переменной.
Если мы объявили переменную с таким-то типом, то тип переменной мы поменять не можем.
Конечно же во время выполнения программы значение переменной может изменяться. Допустим мы установили значение 8 в переменную max, а потом где-то дальше в программе мы её изменили:
int max = 8;
...
max = 89; 2. Область видимости переменной в Java
В Java допускается объявление переменных в любом блоке кода. Блок кода заключается в фигурные скобки, задавая тем самым область видимости или действия. Таким образом, при открытии каждого нового блока кода создается новая область видимости.
- Две основные области видимости в Java определяются классом и методом, хотя такое их разделение несколько искусственно.
- В языке Java видимость переменных, определяемая методом, начинается с его открывающей фигурной скобки. Если у метода имеются параметры, то они также включаются в область видимости метода и действуют точно так же, как и любая другая переменная в методе.
- Переменные, объявленные в области видимости, не доступны из кода за пределами этой области.
- Области видимости могут быть вложенными.
- Переменные создаются при входе в их область действия и уничтожаются при выходе из нее.
- Во внутреннем блоке кода нельзя объявлять переменные с тем же именем, что и во внешней области действия.
Рассмотрим области действия переменных на следующем примере:
public class VarExample {
String str1 = "Hello!"; // переменные str1 и str2 объявлены в классе. То есть область их действия - это класс.
String str2 = "Hi!";
public static void main(String[] args) {
int x; // переменная x доступна всему коду из метода main ( )
x = 10;
if (x == 10) { // начало новой области действия,
int y = 20;
//int x = 45; // ОШИБКА! Во внутреннем блоке кода нельзя
// объявлять переменные с тем же именем, что и во внешней области действия.
//обе переменные x и y доступны в этой области действия
System.out.println(" x и y : " + x + " " + y);
x = y * 2;
}
// y = 100; // ОШИБКА! переменная y недоступна
// в этой области действия
// переменная x доступна и здесь
System.out.println(" x равно " + x);
}
}
3. Объявление локальных переменных с помощью var
В Java 10 появилась возможность объявлять локальные переменные с помощью ключевого слова Java var без указания типа. Тип выводится компилятором из присваиваемого значения:
public class VarExample2 {
public static void main(String[] args) {
var i = 6;
var d = 7.8;
var s = "some String";
System.out.println(i);
System.out.println(d);
System.out.println(s);
}
} Конечно же, у такого типа объявления есть свои достоинства и недостатки.
Достоинство - это то, что Вам не нужно задумываться о том, какого типа будет ваша переменная. Но с другой стороны тип переменной помогает понять какое значение хранится в этой переменной. Поэтому если вы используете var, то лучше использовать более понятные идентификаторы. То есть переменные i, d и s в таком случае будут не очень корректные.
Часто задаваемые вопросы
Что такое область видимости переменной?
Область видимости — это часть кода, где переменная доступна. Она задаётся блоком в фигурных скобках: переменная создаётся при входе в свой блок и уничтожается при выходе из него. Переменная, объявленная внутри блока, недоступна снаружи. Две основные области видимости в Java определяются классом и методом, а сами блоки могут быть вложенными.
Можно ли использовать var для полей класса?
Нет. Ключевое слово var работает только для локальных переменных — тех, что объявлены внутри метода. Его нельзя использовать для полей класса, параметров метода или возвращаемого типа. Компилятор выводит тип из значения, которым переменная инициализируется, поэтому var обязательно требует инициализации в момент объявления.
Можно ли во вложенном блоке объявить переменную с тем же именем, что и во внешнем?
Нет. Во внутреннем блоке кода нельзя объявить переменную с тем же именем, что и переменная из внешней области видимости — это приведёт к ошибке компиляции. При этом переменные из внешнего блока остаются доступными во вложенном, поэтому их можно использовать, но не переобъявлять.
Какое значение у переменной, если её не инициализировать?
У полей класса, которые не инициализированы явно, есть значение по умолчанию: для числовых типов это 0, для boolean — false, для ссылочных типов — null. А вот локальные переменные внутри метода значения по умолчанию не получают: использовать их до инициализации нельзя, компилятор выдаст ошибку.
Презентацию с видео можно скачать на Patreon.
Видео объяснение
Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.
Комментарии