Урок 3. Переменные в Java

В этом уроке мы познакомим с основами синтаксиса Java вместе с полезными концепциями для понимания некоторых важных аспектов выполнения программы.

Многие из частей, вероятно, уже вам известны, если вы когда-либо использовали какой-либо язык программирования.

Переменные, идентификаторы и адреса

Формально мы могли бы определить переменную на языке программирования как пару, состоящую из:

  • имя (также называемый идентификатором)
  • и адрес памяти, предназначенный для хранения определенной величины, обычно называемой значением переменной.

Символьное имя переменной используется в программах для ссылки на адрес памяти, чтобы получить доступ и / или изменить его значение во время выполнения.

Объявить переменные

В Java (который принадлежит к классу типизированных языков) каждая переменная также имеет связанный с ним тип (например IntegerStringboolean и т.д.), что определяет характеристики, которые имеют значения, что переменная может взять на себя.

Например, переменная типа Integer может содержать значение, 40 но не текст "сорок".

В общем, в Java тип переменной может быть одним из предопределенных (примитивных) типов языка или типом, определенным нами, как мы увидим в следующих разделах.

Синтаксис объявления переменной в Java следующий:

 [public|protected|private] [static] [final] тип_данных идентификатор(имя_переменной)] [= значение];

где части в квадратных скобках «[]» являются необязательными, а символ вертикальной черты «|» следует читать как «или» (значение ключевых слов будет разъяснено ниже).

Мы также можем инициализировать переменную, когда присутствует символ «=«, за которым следует значение, которое он должен принять.

Имена переменных

Синтаксически идентификатор (имя) переменной представляет собой последовательность букв и цифр, первым элементом которой должна быть буква, символ подчеркивания (‘_‘) или символ доллара (‘$‘).

В любом случае, конвенция (не синтаксическое правило) находится в силе, что имена переменных начинаются с буквы нижнего регистра и, если формируется несколькими словами, связанных между собой, все слова кроме первого начинаются с верхнего регистра, а не используют символ “_”, $хотя он разрешен. Например:

int wordCount;

Идентификатор может быть любой строкой, но в языке есть зарезервированные слова, которые нельзя использовать в качестве идентификаторов:

abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile
ключевые слова языка Java

Типы переменных

В Java есть три типа переменных: локальные переменные, переменные экземпляра и переменные класса. Посмотрим подробно, что это такое.

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

Мы говорим о локальных переменных, когда объявление происходит внутри метода.

Локальные переменные создаются при вызове метода и исчезают (стираются из памяти) при выходе из метода.

Каждая переменная, объявленная в методе, может использоваться только внутри самого метода, а в Java локальные переменные не могут использоваться до их инициализации.

Например, если мы попытались скомпилировать следующий метод:

void add(long i) {
	long j;
	j = j + i;
}

компилятор Java выдал бы нам сообщение об ошибке, потому что переменная j не была инициализирована перед ее использованием, и поэтому невозможно добавить значение к переменной, пока ей не будет присвоено значение.

Вместо этого следующий код будет компилироваться без ошибок:

void add(long i) {
	long j = 1;
	j = j + i;
}

При выполнении этого фрагмента кода виртуальная машина Java создает пространство в памяти для записи локальных переменных, I и j затем удаляет их (освобождая пространство памяти) в конце выполнения метода add.

Переменные экземпляра

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

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

Может случиться так, что локальная переменная в методе (или параметр метода) имеет то же имя (идентификатор), что и переменная экземпляра. В этом случае более конкретная переменная, то есть локальная переменная или параметр, имеет приоритет.

Посмотрим на пример:

public class Scope {
	int var = 6;
	public void metod1(int var) {
		int i = var;		
		// в этом случае параметр var имеет приоритет
		// принимая значение, которое будет передано в качестве параметра методу
	}
	public void metod2() {
		int var = 7;
		int i = var;
		//здесь локальная переменная имеет приоритет над методом, поэтому
		// i имеет значение 7	
	}
	public void metod3() {
		int i = var;		
		// здесь мы просто присваиваем i значение
		// переменной экземпляра и i принимает значение 6
	}
	public void metod4(int var) {
		int i = this.var;
		
// в этом случае i принимает значение 6
// из значения параметра, поскольку мы использовали
// ключевое слово 'this' указывает на использование переменной 'var'
// которое мы определили, как поле и которое принадлежит
// текущему экземпляру класса.
	}
}

Экземпляр переменной (нестатический) продолжает существовать в памяти программы до тех пор, пока существует объект, который его содержит (объект «остается живым», пока существует хотя бы одна ссылка).

Переменные класса (статические)

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

static int var = 6;

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

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

Статическая переменная класса живет (то есть сохраняет занятость памяти и продолжает сохранять свое значение) до конца программы.

Часто задаваемые вопросы

Как Java CodeConvention рекомендует называть классы и методы?
Классы начинаются с заглавной буквы, методы со строчной
Инициализированная переменная в Java имеет?
Тип, имя, первоначальное значение
Для объявления переменной в Java достаточно задать:
Тип, имя
Что такое значение переменной?
Данные, хранящиеся в переменной
Оцените статью
Добавить комментарий

Как Java CodeConvention рекомендует называть классы и методы?
Классы начинаются с заглавной буквы, методы со строчной
Инициализированная переменная в Java имеет?
Тип, имя, первоначальное значение
Для объявления переменной в Java достаточно задать:
Тип, имя
Что такое значение переменной?
Данные, хранящиеся в переменной