В чем разница между экземпляром и классом (static) переменные в Java [закрыт]
название этого вопроса на самом деле является предыдущим экзаменационным вопросом, и я ищу разъяснение / ответ на него.
обратите внимание, что я изучаю Java и знакомлюсь с его синтаксисом.
Я понимаю, что этот вопрос, возможно, был задан раньше, и если да, то кто-нибудь может показать мне, где я могу получить доступ к вопросу, если это возможно? Также, Пожалуйста, примите мои извинения, если это так. Чтобы показать, что я исследовал эту область, мой собственный понимание заключается в том, что переменные экземпляра принадлежат объектам / экземплярам определенного класса (шаблона) и могут быть изменены (мутированы) внутри этого экземпляра / объекта по мере необходимости.
переменная класса-это переменная, которая имеет только одну копию и может быть доступна, но не изменена (мутирована?), но доступен для всех классов по мере необходимости?
Я на правильном пути?
кроме того, что именно делает "статический"? Является ли экземпляр класса только статическим если он находится в основном экземпляре класса?
большое спасибо.
3 ответов
статическая переменная является общей для всех экземпляров класса, в то время как переменная экземпляра уникальна для каждого экземпляра класса.
память статической переменной выделяется во время компиляции, они загружаются во время загрузки и инициализируются во время инициализации класса. В случае переменной экземпляра все это делается во время выполнения.
вот полезный пример:
переменная экземпляра одна на объект: каждый объект имеет свою собственную копию переменная экземпляра.
public class Test{
int x = 5;
}
Test t1 = new Test();
Test t2 = new Test();
оба t1 и t2 будут иметь свою собственную копию x.
статическая переменная-одна на класс: каждый объект этого класса имеет одну и ту же статическую переменную.
public class Test{
public static int x = 5;
}
Test t1 = new Test();
Test t2 = new Test();
оба t1 и t2 будут иметь одинаковый x.
вы можете сделать несколько экземпляров своего класса. При объявлении переменной экземпляра каждый экземпляр получает свою собственную уникальную копию этой переменной. При объявлении статической переменной, это одна и та же переменная и значение для всех экземпляров.
public class Foo
{
public int instanceVariable;
public static int staticVariable;
}
Foo instance1 = new Foo();
Foo instance2 = new Foo();
instance1.staticVariable = 1;
instance1.instanceVariable = 2;
instance2.instanceVariable = 3;
instance1.staticVariable == 1 // true
instance2.staticVariable == 1 // true
instance1.instanceVariable == 2 //true
instance2.instanceVariable == 3 //true
статическая переменная хранит значение, которое используется всеми экземплярами (или не экземпляр) класса, в котором она определена. Где в качестве переменной экземпляра по имени каждый раз создается новая копия.При создании нового объекта.