Рубрики

Разница между статическими и нестатическими переменными в Java

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

  • Локальные переменные
  • Переменные экземпляра
  • Статические переменные

Локальные переменные и переменные экземпляра вместе называются нестатическими. Следовательно, можно также сказать, что переменные Java можно разделить на 2 категории:

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

    Важные моменты для статических переменных: —

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

    Ниже приведена Java-программа, демонстрирующая, что статический блок и статические переменные выполняются в порядке их присутствия в программе.

    // Java-программа для демонстрации выполнения
    // статических блоков и переменных

    class Test {

        // статическая переменная

        static int a = m1();

      

        // статический блок

        static

        {

            System.out.println("Inside static block");

        }

      

        // статический метод

        static int m1()

        {

            System.out.println("from m1");

            return 20;

        }

      

        // статический метод (main !!)

        public static void main(String[] args)

        {

            System.out.println("Value of a : " + a);

            System.out.println("from main");

        }

    }

    Выход:

    from m1
    Inside static block
    Value of a : 20
    from main
    
  • Нестатическая переменная
    • Локальные переменные : переменная, определенная в блоке, методе или конструкторе, называется локальной переменной.
      • Эти переменные создаются, когда введенный блок или функция вызывается и уничтожается после выхода из блока или когда вызов возвращается из функции.
      • Область действия этих переменных существует только в блоке, в котором объявлена переменная. то есть мы можем получить доступ к этим переменным только внутри этого блока.
      • Инициализация локальной переменной является обязательной.
    • Переменные экземпляра: переменные экземпляра являются нестатическими переменными и объявляются в классе вне любого метода, конструктора или блока.
      • Поскольку переменные экземпляра объявлены в классе, эти переменные создаются при создании объекта класса и уничтожаются при его уничтожении.
      • В отличие от локальных переменных, мы можем использовать спецификаторы доступа для переменных экземпляра. Если мы не указываем какой-либо спецификатор доступа, то будет использоваться спецификатор доступа по умолчанию.
      • Инициализация переменной экземпляра не является обязательной. Значение по умолчанию 0
      • Переменная экземпляра может быть доступна только путем создания объектов.

    Пример :

    // Java-программа для демонстрации
    // нестатические переменные

      

    class GfG {

      

        // нестатическая переменная

        int rk = 10;

      

        public static void main(String[] args)

        {

            // Экземпляр создан, чтобы получить доступ

            // нестатическая переменная.

            Gfg f = new Gfg();

      

            System.out.println("Non static variable"

                               + " accessed using instance"

                               + " of a class");

            System.out.println("Non Static variable "

                               + f.rk);

        }

    }

    Выход:

    Non static variable accessed using instance of a class.
    Non Static variable 10
    

Основные различия между статическими и нестатическими переменными:

Static variableNon static variable
Static variables can be accessed using class nameNon static variables can be accessed using instance of a class
Static variables can be accessed by static and non static methodsNon static variables cannot be accessed inside a static method.
Static variables reduce the amount of memory used by a program.Non static variables do not reduce the amount of memory used by a program
Static variables are shared among all instances of a class.Non static variables are specific to that instance of a class.
Static variable is like a global variable and is available to all methods.Non static variable is like a local variable and they can be accessed through only instance of a class.

Рекомендуемые посты:

Разница между статическими и нестатическими переменными в Java

0.00 (0%) 0 votes