Найти тему
JavaDocs

Переменные

Оглавление

Ссылка на оригинал

Как вы знаете, объект сохраняет свое состояние в полях.

int cadence = 0;
int speed = 0;
int gear = 1;

Вероятно у вас есть вопросы, такие как: Каковы правила и соглашения для присвоения имен полю? Какие существуют типы данных? Обязательно ли инициализировать поля при их объявлении? Присваиваются ли полям значения по умолчанию, если они явно не инициализированы? Мы рассмотрим ответы на эти вопросы в этой статье, но прежде чем мы это сделаем, есть несколько технических различий, о которых вы должны сначала узнать. В языке программирования Java используются оба термина: "поле" и "переменная" - это распространенный источник путаницы среди начинающих разработчиков, поскольку часто кажется, что оба этих понятия относятся к одному и тому же.

Язык программирования Java определяет следующие типы переменных:

  • Переменные экземпляра (нестатические поля). Технически говоря, объекты хранят свои индивидуальные состояния в "нестатических полях", то есть полях, объявленных без ключевого слова static. Нестатические поля также известны как переменные экземпляра, потому что их значения уникальны для каждого экземпляра класса, другими словами, для каждого объекта. currentSpeed одного велосипеда не зависит от currentSpeed другого.
  • Переменные класса (статические поля). Переменная класса - это любое поле, объявленное с модификатором static, что сообщает компилятору, о существовании ровно одной копии этой переменной, независимо от того, сколько раз создавался экземпляр класса, объект. Поле, определяющее количество передач для определенного типа велосипеда, может быть помечено как static поскольку концептуально одинаковое количество передач будет применяться ко всем экземплярам. Код static int numGears = 6; создаст такое статическое поле. Дополнительно можно добавить ключевое слово final, чтобы указать, что количество передач никогда не изменится.
  • Локальные переменные. Подобно тому, как объект сохраняет свое состояние в полях, метод часто сохраняет свое временное состояние в локальных переменных. Синтаксис объявления локальной переменной аналогичен объявлению поля, например, int count = 0. Не существует специального ключевого слова, обозначающего переменную как локальную; это определение полностью зависит от местоположения, в котором объявлена переменная, которое для метода находится между открывающей и закрывающей фигурными скобками метода. Таким образом, локальные переменные видны только тем методам, в которых они объявлены. Они недоступны из остальной части класса.
  • Параметры. Вы уже видели примеры параметров как в Bicycle классе, так и в main методе приложения "Hello World!". Напомним, что сигнатурой для main метода является public static void main(String[] args). Здесь args переменная является параметром этого метода. Важно помнить, что параметры всегда классифицируются как "переменные", а не как "поля". Это относится и к другим конструкциям, принимающим параметры, таким как конструкторы и обработчики исключений.

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

Именование

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

  • Имена переменных чувствительны к регистру. Именем переменной может быть любой разрешенный идентификатор — последовательность букв и цифр Unicode неограниченной длины, начинающаяся с буквы, знака доллара "$" или символа подчеркивания "_". Однако по соглашению имена переменных всегда должны начинаться с буквы, а не с "$" или "_". Кроме того, символ знака доллара, по соглашению, вообще никогда не используется. В некоторых ситуациях автоматически сгенерированные имена могут содержать знак доллара, но в именах переменных его всегда следует избегать. Аналогичное соглашение существует для символа подчеркивания; хотя технически законно начинать имя вашей переменной с "_", такая практика не рекомендуется. Пробелы не допускаются.
  • Последующими символами могут быть буквы, цифры, знаки доллара или подчеркивания. К этому правилу также применимы условности (и здравый смысл). При выборе имени для ваших переменных используйте полные слова вместо загадочных сокращений. Это облегчит чтение и понимание вашего кода. Во многих случаях это также сделает ваш код самодокументируемым; поля с именами cadence, speed и gear, например, гораздо более интуитивно понятны, чем сокращенные версии, такие как s, c и g. Также имейте в виду, что выбранное вами имя не должно быть ключевым словом или зарезервированным словом.
  • Если выбранное вами имя состоит только из одного слова, пишите это слово всеми строчными буквами. Если оно состоит более чем из одного слова, пишите заглавными буквами первую букву каждого последующего слова. Имена gearRatio и currentGear являются яркими примерами этого соглашения. Если ваша переменная хранит постоянное значение, например, static final int NUM_GEARS = 6, соглашение немного меняется: каждая буква пишется заглавной, а последующие слова разделяются символом подчеркивания. По соглашению, символ подчеркивания нигде не используется.

Краткое описание переменных

Язык программирования Java использует как "поля", так и "переменные" как часть своей терминологии. Переменные экземпляра (нестатические поля) уникальны для каждого экземпляра класса. Переменные класса (статические поля) - это поля, объявленные с модификатором static, существует ровно одна копия переменной класса, независимо от того, сколько раз создавался экземпляр класса. Локальные переменные хранят временное состояние внутри метода. Параметры - это переменные, которые предоставляют дополнительную информацию методу, и локальные переменные, и параметры всегда классифицируются как "переменные" (а не "поля"). При присвоении имен вашим полям или переменным существуют правила и условности, которым вы должны (или обязаны) следовать.

К восьми примитивным типам данных относятся: byte, short, int, long, float, double, boolean и char . Класс java.lang.String представляет из себя тип для хранения символьных строк. Компилятор назначит разумное значение по умолчанию для полей вышеуказанных типов; для локальных переменных значение по умолчанию никогда не присваивается. Литерал - это представление фиксированного значения в исходном коде. Массив - это объект-контейнер, который содержит фиксированное количество значений одного типа. Длина массива устанавливается при создании массива. После создания его длина фиксируется.