Переменная предоставляет нам именованное хранилище, которым наши программы могут манипулировать. Каждая переменная в Java имеет определенный тип, который определяет размер и расположение памяти переменной; диапазон значений, которые могут быть сохранены в этой памяти; и набор операций, которые могут быть применены к переменной.
Вы должны объявить все переменные, прежде чем их можно будет использовать. Ниже приведена основная форма объявления переменной:
data type variable [ = value][, variable [ = value] ...] ;
Здесь тип данных является одним из типов данных Java, а переменная — это имя переменной. Чтобы объявить более одной переменной указанного типа, вы можете использовать список через запятую.
Ниже приведены допустимые примеры объявления и инициализации переменных в Java.
пример
int a, b, c; // Declares three ints, a, b, and c. int a = 10, b = 10; // Example of initialization byte B = 22; // initializes a byte type variable B. double pi = 3.14159; // declares and assigns a value of PI. char a = 'a'; // the char variable a iis initialized with value 'a'
В этой главе будут описаны различные типы переменных, доступные на языке Java. В Java есть три вида переменных:
- Локальные переменные
- Переменные экземпляра
- Класс / Статические переменные
Локальные переменные
-
Локальные переменные объявляются в методах, конструкторах или блоках.
-
Локальные переменные создаются при вводе метода, конструктора или блока, и эта переменная будет уничтожена после выхода из метода, конструктора или блока.
-
Модификаторы доступа нельзя использовать для локальных переменных.
-
Локальные переменные видны только внутри объявленного метода, конструктора или блока.
-
Локальные переменные реализованы на уровне стека внутри.
-
Не существует значения по умолчанию для локальных переменных, поэтому следует объявить локальные переменные и назначить начальное значение перед первым использованием.
Локальные переменные объявляются в методах, конструкторах или блоках.
Локальные переменные создаются при вводе метода, конструктора или блока, и эта переменная будет уничтожена после выхода из метода, конструктора или блока.
Модификаторы доступа нельзя использовать для локальных переменных.
Локальные переменные видны только внутри объявленного метода, конструктора или блока.
Локальные переменные реализованы на уровне стека внутри.
Не существует значения по умолчанию для локальных переменных, поэтому следует объявить локальные переменные и назначить начальное значение перед первым использованием.
пример
Здесь возраст является локальной переменной. Это определено внутри метода pupAge (), и его область действия ограничена только этим методом.
public class Test { public void pupAge() { int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]) { Test test = new Test(); test.pupAge(); } }
Это даст следующий результат —
Выход
Puppy age is: 7
пример
В следующем примере используется age без инициализации, поэтому во время компиляции выдается ошибка.
public class Test { public void pupAge() { int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]) { Test test = new Test(); test.pupAge(); } }
Это приведет к следующей ошибке при компиляции —
Выход
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
Переменные экземпляра
-
Переменные экземпляра объявляются в классе, но вне метода, конструктора или любого блока.
-
Когда место выделяется для объекта в куче, создается слот для каждого значения переменной экземпляра.
-
Переменные экземпляра создаются при создании объекта с использованием ключевого слова «new» и уничтожаются при уничтожении объекта.
-
Переменные экземпляра содержат значения, на которые должны ссылаться более одного метода, конструктора или блока, или существенные части состояния объекта, которые должны присутствовать во всем классе.
-
Переменные экземпляра могут быть объявлены на уровне класса до или после использования.
-
Модификаторы доступа могут быть заданы для переменных экземпляра.
-
Переменные экземпляра видимы для всех методов, конструкторов и блоков в классе. Обычно рекомендуется сделать эти переменные приватными (уровень доступа). Однако видимость для подклассов может быть предоставлена для этих переменных с использованием модификаторов доступа.
-
Переменные экземпляра имеют значения по умолчанию. Для чисел значением по умолчанию является 0, для логических значений — false, а для ссылок на объекты — null. Значения могут быть назначены во время объявления или внутри конструктора.
-
К переменным экземпляра можно обращаться напрямую, вызывая имя переменной внутри класса. Однако в статических методах (когда переменным экземпляра предоставляется доступ), они должны вызываться с использованием полного имени. ObjectReference.VariableName .
Переменные экземпляра объявляются в классе, но вне метода, конструктора или любого блока.
Когда место выделяется для объекта в куче, создается слот для каждого значения переменной экземпляра.
Переменные экземпляра создаются при создании объекта с использованием ключевого слова «new» и уничтожаются при уничтожении объекта.
Переменные экземпляра содержат значения, на которые должны ссылаться более одного метода, конструктора или блока, или существенные части состояния объекта, которые должны присутствовать во всем классе.
Переменные экземпляра могут быть объявлены на уровне класса до или после использования.
Модификаторы доступа могут быть заданы для переменных экземпляра.
Переменные экземпляра видимы для всех методов, конструкторов и блоков в классе. Обычно рекомендуется сделать эти переменные приватными (уровень доступа). Однако видимость для подклассов может быть предоставлена для этих переменных с использованием модификаторов доступа.
Переменные экземпляра имеют значения по умолчанию. Для чисел значением по умолчанию является 0, для логических значений — false, а для ссылок на объекты — null. Значения могут быть назначены во время объявления или внутри конструктора.
К переменным экземпляра можно обращаться напрямую, вызывая имя переменной внутри класса. Однако в статических методах (когда переменным экземпляра предоставляется доступ), они должны вызываться с использованием полного имени. ObjectReference.VariableName .
пример
import java.io.*; public class Employee { // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName) { name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal) { salary = empSal; } // This method prints the employee details. public void printEmp() { System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args[]) { Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); } }
Это даст следующий результат —
Выход
name : Ransika salary :1000.0
Класс / Статические Переменные
-
Переменные класса, также известные как статические переменные, объявляются с ключевым словом static в классе, но вне метода, конструктора или блока.
-
В каждом классе будет только одна копия каждой переменной класса, независимо от того, сколько объектов создано из нее.
-
Статические переменные редко используются, кроме тех, которые объявлены как константы. Константы — это переменные, которые объявлены как public / private, final и static. Постоянные переменные никогда не изменяются от их начального значения.
-
Статические переменные хранятся в статической памяти. Редко использовать статические переменные, отличные от объявленных final и используемые как открытые или закрытые константы.
-
Статические переменные создаются при запуске программы и уничтожаются при ее остановке.
-
Видимость аналогична переменным экземпляра. Однако большинство статических переменных объявляются общедоступными, поскольку они должны быть доступны для пользователей класса.
-
Значения по умолчанию такие же, как переменные экземпляра. Для чисел значением по умолчанию является 0; для булевых это неверно; и для ссылок на объект это нуль. Значения могут быть назначены во время объявления или внутри конструктора. Кроме того, значения могут быть назначены в специальных статических блоках инициализатора.
-
Доступ к статическим переменным можно получить, вызвав имя класса ClassName.VariableName .
-
Когда объявляются переменные класса как public static final, тогда имена переменных (константы) пишутся в верхнем регистре. Если статические переменные не являются общедоступными и окончательными, синтаксис именования совпадает с экземпляром и локальными переменными.
Переменные класса, также известные как статические переменные, объявляются с ключевым словом static в классе, но вне метода, конструктора или блока.
В каждом классе будет только одна копия каждой переменной класса, независимо от того, сколько объектов создано из нее.
Статические переменные редко используются, кроме тех, которые объявлены как константы. Константы — это переменные, которые объявлены как public / private, final и static. Постоянные переменные никогда не изменяются от их начального значения.
Статические переменные хранятся в статической памяти. Редко использовать статические переменные, отличные от объявленных final и используемые как открытые или закрытые константы.
Статические переменные создаются при запуске программы и уничтожаются при ее остановке.
Видимость аналогична переменным экземпляра. Однако большинство статических переменных объявляются общедоступными, поскольку они должны быть доступны для пользователей класса.
Значения по умолчанию такие же, как переменные экземпляра. Для чисел значением по умолчанию является 0; для булевых это неверно; и для ссылок на объект это нуль. Значения могут быть назначены во время объявления или внутри конструктора. Кроме того, значения могут быть назначены в специальных статических блоках инициализатора.
Доступ к статическим переменным можно получить, вызвав имя класса ClassName.VariableName .
Когда объявляются переменные класса как public static final, тогда имена переменных (константы) пишутся в верхнем регистре. Если статические переменные не являются общедоступными и окончательными, синтаксис именования совпадает с экземпляром и локальными переменными.
пример
import java.io.*; public class Employee { // salary variable is a private static variable private static double salary; // DEPARTMENT is a constant public static final String DEPARTMENT = "Development "; public static void main(String args[]) { salary = 1000; System.out.println(DEPARTMENT + "average salary:" + salary); } }
Это даст следующий результат —
Выход
Development average salary:1000
Примечание. Если к переменным обращаются из внешнего класса, к константе следует обращаться как Employee.DEPARTMENT
Что дальше?
В этой главе вы уже использовали модификаторы доступа (общедоступные и частные). В следующей главе будут подробно описаны модификаторы доступа и модификаторы отсутствия доступа.