Переменные в Java

Переменная – это имя для области памяти, в которой хранится информация. Переменные в Java имеют свой тип. При объявлении переменной необходимо указать ее тип и дать ей имя. Имя переменной должно начинаться с буквы и представлять собой сочетание букв и цифр. Термины буквы и цифры имеют в Java более широкое значение, чем в других языках программирования. Буквами считаются символы A — Z , a — z, _ и любой другой символ в кодировке уникода, но обо всем по порядку. Рассмотрим небольшой пример, следующий код объявляет переменную num с типом int:

Обратите внимание на точку с запятой в конце объявления. Она необходима, потому что объявление в Java считается полным оператором. После того как мы объявили переменную, мы можем присвоить ей значение, это называется инициализация. Для того, чтобы присвоить переменной значение надо после имени переменной поставить знак равенства и указать присваиваемое значение:

В примере выше переменной num был присвоен 0. Совершенно не обязательно присваивать значение переменной при объявлении, это можно сделать позже:

Во всех примерах выше в качестве начальных значений переменных использовались константы, но Java допускает и динамическую инициализацю с помощью любого выражения:

В примере, две переменных a и b инициализируются константами 1 и 2 соответственно, когда как переменная c инициализируется динамически – суммой переменных a и b.



Объявление нескольких переменных.

Java позволяет объявлять и инициализировать несколько переменных сразу:

Мы объявили две переменных – num1 и num2, и присвоили им значения 1 и 2 соответственно. вы можете объявлять столько переменных в одном выражении сколько захотите, до тех пор, пока они остаются переменными одного типа, например, следующий код не скомпилируется:

Переменные num1 и num2 разных типов, что и вызывает ошибку компиляции. Даже если переменные одного типа, дважды указывать тип переменных в одном выражении не допускается, следующий код так же не скомпилируется:

Не смотря, на то, что обе переменные имеют одинаковый тип, второй раз тип int указывать не нужно.

Методы isJavaIdentifierStart() и isJavaIdentifierPart() из класса Character помогают определить какие символы можно считать “буквами” в Java

Хотелось бы отметить еще один очень важный момент, касающийся инициализации переменных. Рассмотрим следующий код:

В этом примере объявляются три переменных num1, num2 и num3, но только num3 присваивается значение 3.

Идентификаторы.

Java предъявляет строгие требования к именованию идентификаторов. К счастью те же самые требования применимы и к именованию методов, полей, классов. Имя переменной должно представлять собой сочетание букв и цифр. Длина имени переменной не ограничивается. Существует три основных правила именования переменных:

1. Имя должно начинаться с буквы или символов $ или _
2. Символы кроме первого могут быть цифрами
3. Имя идентификатора не должно совпадать с зарезервированным словом. Учтите Java учитывает регистр при обозначении имен, вы можете использовать зарезервированные слова для идентификаторов только в другом регистре, но делать это без очень веских на то оснований не стоит.

Класс Character обладает двумя методами isJavaIdentifierStart() и isJavaIdentifierPart(), которые позволяют узнать какие именно символы уникода можно считать буквами в Java. Ниже представлен список всех зарезервированных в Java слов. const и goto на данный момент в Java не используются, но остаются зарезервированными.

Переменные в Java

Литералы: true, false и null не являются зарезервированными словами, но также не могут быть использованы в качестве идентификаторов.

Исходя из выше изложенного вы вольны давать имена своим идентификатором, так как Вам захочется, соблюдая три простых правила, но увлекаться не стоит. Например, следующий код абсолютно корректен и компилируется без ошибок:

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



Инициализация переменных по умолчанию.

Локальные переменные.

Локальными переменными называются переменные, которые объявлены в методе. Локальным переменным должно быть присвоено какое-либо значением перед их использованием, если значение присвоено не будет, то компилятор выдаст ошибку, например, следующий код не скомпилируется:

В примере переменной i не присвоено никакого значения, несмотря на это, мы пытаемся прибавить к ней 1, что приводит к ошибке компиляции. вы так же вольны сначала объявить переменную, а потом уже ее инициализировать непосредственно перед использованием. Внесем небольшие коррективы в предыдущий пример:

Теперь код компилируется без проблем. Давайте разберем более сложный пример инициализации переменных:

Код так же компилируется без проблем. Если переменная check будет true, то переменной i будет присвоено значение 1, если переменная check будет false то переменная i получит значение 2. иначе говоря, какой бы не была переменная check значение переменной i будет присвоено в любом случае. А если один из блоков условного оператора сделать пустым? Например, сделаем блок else пустым:

Код попросту не скомпилируется. Компилятор распознает, что возможны ситуации при которых переменной i может быть не присвоено значение. В нашем примере если переменная check будет false, то переменная i никакого значения не получит.



Переменная экземпляра и класса.

Переменные экземпляра объявляются в классе, но за приделами метода или конструктора. Переменные экземпляра так же часто называют полями класса. Переменные класса, по-другому называют статическими переменными. При объявлении статических переменных перед типом переменной указывают ключевое слово static. И переменные экземпляра и переменные класса не требуют обязательной инициализации, если этим переменным не присвоено никакого значение, им присваивается значение по умолчанию:

Переменные в Java

Видимость переменных.

Как мы уже выяснили локальные переменные объявляются в методе. Как вы думаете сколько локальных переменных объявлено в следующем методе:

На самом деле две – i и k. Переменная i объявлена в теле метода, переменная k используется в качестве параметра. Область видимости у этих двух переменных одинакова – тело метода, за приделами метода их использовать нельзя. Область видимости локальных переменных не может быть больше метода, в котором они объявлены. Зато может быть меньше, рассмотрим следующий пример:

Теперь область действия переменной i ограничена условным оператором и за его приделами она недоступна. Ограничить область действия переменной можно не только условным оператором, но и обычным блоком кода – фигурными скобками:

За приделами внутренних скобок метода переменная i по-прежнему остается недоступной.

Пользоваться знаком $ для именования элементов кода не рекомендуется

С переменными экземпляра все намного проще. Они доступны во всем классе. Модификаторы доступа и принципы наследования были сознательно опущены. Рассмотрим пример:

В качестве переменной экземпляра здесь выступает переменная field. При объявлении мы ей не присвоили никакого значения, и она его получила автоматически – переменной field был присвоен 0. Как видите мы ее свободно используем в двух методах класса.

Site Footer