Перейти к контенту

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

В Java есть 3 вида переменных:

  • локальные переменные;
  • переменные экземпляра;
  • класс / статические переменные.

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

  • Объявляются в методах, конструкторах или блоках.
  • Создаются при вводе метода, конструктора или блока, и эта переменная будет уничтожена после выхода из метода, конструктора или блока.
  • Модификаторы доступа нельзя использовать для локальных переменных.
  • Видны только внутри метода, конструктора или блока.
  • Реализованы на уровне стека внутри.
  • Не существует значения по умолчанию, поэтому следует объявить локальные переменные и назначить начальное значение перед первым использованием.

Пример 1

Здесь возраст является локальной переменной. Это определено внутри метода 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();
   }
}

Это даст следующий результат —

Итог 1

Puppy age is: 7

Пример 2

В следующем примере используется 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();
    }
 }

Это приведет к следующей ошибке при компиляции —

Итог 2

Test.java:4:variable number might not have been initialized
 age = age + 7; ^
1 error

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

  • Объявляются в классе, но вне метода, конструктора или любого блока.
  • Когда пространство выделяется для объекта в куче, создается слот для каждого значения переменной экземпляра.
  • Создаются при создании объекта с использованием ключевого слова «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 все имена переменных (константы) пишутся в верхнем регистре. Если статические переменные не являются общедоступными и окончательными, синтаксис именования совпадает с экземпляром и локальными переменными.

Пример

 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

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)