Переменная экземпляра и локальная переменная
Переменная экземпляра - это тип переменной, который присутствует в объектно-ориентированном программировании. Это переменная, определенная в классе, и каждый объект этого класса содержит отдельную копию этой переменной. С другой стороны, использование локальных переменных не ограничивается объектно-ориентированными языками программирования. Это переменная, которую можно оценить только в конкретном блоке кода (например, функция, блок цикла и т. д.), в котором она определена. По этой причине говорят, что локальные переменные имеют локальную область видимости.
Что такое переменная экземпляра?
Переменные экземпляра используются в объектно-ориентированном программировании для хранения состояния каждого объекта в классе. Они также известны как переменные-члены или переменные поля. Переменные экземпляра объявляются без использования ключевого слова static в Java. Значения, хранящиеся в переменных экземпляра, уникальны для каждого объекта (каждый объект имеет отдельную копию), а хранящиеся в них значения представляют состояние этого объекта. Пространство для переменной экземпляра выделяется в куче, когда этот объект выделяется в куче. Поэтому переменные экземпляра хранятся в памяти до тех пор, пока объект жив. Например, цвет одной машины не зависит от цвета другой машины. Таким образом, цвет объекта автомобиля может быть сохранен в переменной экземпляра. На практике переменные экземпляра объявляются внутри классов и вне методов. Обычно переменные экземпляра объявляются как приватные, чтобы к ним можно было получить доступ только внутри класса, в котором они объявлены.
Что такое локальная переменная?
Локальные переменные - это переменные, имеющие локальную область видимости, и они объявляются в определенном блоке кода. Локальные переменные можно рассматривать как переменные, которые используются методом для хранения своего временного состояния. Область действия локальной переменной определяется с помощью места объявления переменной, и специальные ключевые слова для этой цели не используются. Как правило, доступ к локальной переменной ограничен внутри блока кода, в котором она объявлена (т. е. между открывающей и закрывающей фигурными скобками этого блока кода). Локальные переменные обычно хранятся в стеке вызовов. Это позволит рекурсивным вызовам функций поддерживать свои собственные копии локальных переменных, которые будут храниться в отдельных адресных пространствах памяти. Когда метод завершает свое выполнение, информация об этом методе извлекается из стека вызовов, а также уничтожаются сохраненные локальные переменные.
В чем разница между переменной экземпляра и локальной переменной?
Переменные экземпляра объявляются внутри классов вне методов и хранят состояние объекта, а локальные переменные объявляются внутри блоков кода и используются для хранения состояния метода. Переменная экземпляра активна до тех пор, пока активен объект, содержащий эту переменную, в то время как локальная переменная активна во время выполнения этого блока метода/кода. К переменной экземпляра (объявленной общедоступной) можно получить доступ внутри класса, тогда как к локальной переменной можно получить доступ только в блоке кода, в котором она объявлена. Использование переменных экземпляра ограничено только объектно-ориентированным программированием, в то время как локальные переменные не имеют такого ограничения.