Статьи

Переменные Java

переменные

Переменная является основной единицей хранения в программе Java. Переменная определяется комбинацией идентификатора, типа и необязательного инициализатора. Кроме того, все переменные имеют область видимости, которая определяет их видимость и время жизни. Эти элементы рассматриваются далее.

Объявление переменной

В Java все переменные должны быть объявлены перед использованием. Основная форма объявления переменной показана здесь:


идентификатор типа [= значение] [, идентификатор [= значение]…];

  • Тип является одним из атомарных типов Java (Типы данных) или именем класса или интерфейса. (Мы обсудим класс и типы интерфейса позже).
  • Идентификатор — это имя переменной.
  • Вы можете инициализировать переменную, указав знак равенства и значение. Помните, что выражение инициализации должно приводить к значению того же (или совместимого) типа, что указано для переменной.
  • Чтобы объявить более одной переменной указанного типа, используйте список через запятую.

пример


int a, b, c; // объявляет три целых, a, b и c.

int d = 3, e, f = 5; // объявляет еще три целых числа, инициализируя // d и f.

байт z = 22; // инициализирует z.

двойной пи = 3,14159; // объявляет приближение числа пи

char x = ‘x’; // переменная x имеет значение ‘x’.

логическое d = ложь; // логическое значение, инициализированное значением false;

Выбранные вами идентификаторы не имеют ничего общего с их именами

тип.

Динамическая инициализация

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

1
2
3
4
5
6
7
8
class DynInit {
public static void main(String args[]) {
double a = 3.0, b = 4.0;
// c is dynamically initialized
double c = Math.sqrt(a * a + b * b);
System.out.println("Hypotenuse is " + c);
}
}
  • Здесь объявлены три локальные переменные — a, b и c. Первые два, a и b, инициализируются константами.
  • с инициализируется динамически по длине гипотенузы.
  • Программа использует другой встроенный в Java метод, sqrt (), который является членом класса Math, для вычисления квадратного корня его аргумента.
  • Ключевым моментом здесь является то, что выражение инициализации может использовать любой элемент, действительный на момент инициализации, включая вызовы методов, других переменных или литералов.

Область действия и время жизни переменных

Пока что все используемые переменные были объявлены в начале метода main (). Однако Java позволяет объявлять переменные в любом блоке. Блок определяет область. Таким образом, каждый раз, когда вы начинаете новый блок, вы создаете новую область. Область действия определяет, какие объекты видны другим частям вашей программы. Это также определяет время жизни этих объектов.

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

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

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

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

1
2
3
4
5
class Student
{
 String name;
 int age;
}

Здесь имя и возраст являются переменными экземпляра класса Student.

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

1
2
3
4
5
6
class Student
{
 String name;
 int age;
 static int collegeCode =1101;
}

Здесь CollegeCode — это статическая переменная. Каждый объект класса Student будет разделять свойство CollegeCode .

Область применения программы с примером программы

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
// Demonstrate block scope.
class Scope {
public static void main(String args[]) {
int x; // known to all code within main
x = 10;
if(x == 10) { // start new scope
int y = 20; // known only to this block
// x and y both known here.
System.out.println("x and y: " + x + " " + y);
x = y * 2;
}
// y = 100; // Error! y not known here
// x is still known here.
System.out.println("x is " + x);
}
}

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

  • Переменные создаются при вводе их области действия и уничтожаются при оставлении их области действия.
  • Переменная не будет сохранять свое значение после выхода из области видимости.
  • Переменные, объявленные в методе, не будут хранить свои значения между вызовами этого метода. Кроме того, переменная, объявленная в блоке, потеряет свое значение при выходе из блока. Таким образом, время жизни переменной ограничено ее областью действия.
  • Если объявление переменной включает инициализатор, то эта переменная будет повторно инициализироваться каждый
  • время вводится блок, в котором он объявлен.
01
02
03
04
05
06
07
08
09
10
11
12
// Demonstrate lifetime of a variable.
class LifeTime {
public static void main(String args[]) {
int x;
for(x = 0; x < 3; x++) {
int y = -1; // y is initialized each time block is entered
System.out.println("y is: " + y); // this always prints -1
y = 100;
System.out.println("y is now: " + y);
}
}
}

Выход

1
2
3
4
5
6
y is: -1
y is now: 100
y is: -1
y is now: 100
y is: -1
y is now: 100

Дублирующая переменная ошибка

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

1
2
3
4
5
6
7
8
9
// This program will not compile
class ScopeErr {
public static void main(String args[]) {
int bar = 1;
{ // creates a new scope
int bar = 2; // Compile-time error – bar already defined!
}
}
}
Смотрите оригинальную статью здесь: Переменные Java

Мнения, высказанные участниками Java Code Geeks, являются их собственными.