Java — типы переменных
Переменная предоставляет нам именованное хранилище, которым могут манипулировать наши программы. Каждая переменная в 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
Пример
В следующем примере используется возраст без его инициализации, поэтому он выдаст ошибку во время компиляции.
Живая демонстрация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
Переменные экземпляра
-
Переменные экземпляра объявляются в классе, но вне метода, конструктора или любого блока.
-
Когда для объекта в куче выделяется пространство, создается слот для каждого значения переменной экземпляра.
-
Переменные экземпляра создаются при создании объекта с использованием ключевого слова «новый» и уничтожаются при уничтожении объекта.
-
Переменные экземпляра содержат значения, на которые должны ссылаться более одного метода, конструктора или блока, или важные части состояния объекта, которые должны присутствовать во всем классе.
-
Переменные экземпляра могут быть объявлены на уровне класса до или после использования.
-
Модификаторы доступа могут быть заданы для переменных экземпляра.
-
Переменные экземпляра видны для всех методов, конструкторов и блоков в классе. Обычно рекомендуется делать эти переменные закрытыми (уровень доступа). Однако для этих переменных может быть задана видимость подклассов с использованием модификаторов доступа.
-
Переменные экземпляра имеют значения по умолчанию. Для чисел значение по умолчанию равно 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 имена переменных (константы) пишутся в верхнем регистре. Если статические переменные не являются общедоступными и окончательными, синтаксис именования такой же, как у переменных экземпляра и локальных переменных.
Пример
Живая демонстрация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
Что дальше?
Вы уже использовали модификаторы доступа (общедоступные и частные) в этой главе. В следующей главе будут подробно описаны модификаторы доступа и модификаторы отсутствия доступа.
java