/ / Каква е разликата между променливите на класа и променливите членове в Java - java, променливи

Каква е разликата между променливите в класа и променливите в Java - Java, променливи

Няма какво да се обясни. Заглавието е достатъчно, за да обясни въпроса. Получих това в едно интервю днес.

What are class variables and member variables in Java?

Благодаря ти!

Отговори:

3 за отговор № 1

Тъй като Зуинден каза, че вероятно означаваха статичнипроменливи вместо променливи на класа. За членски променливи е необходим пример за класа, за да се достигне променливата. Например, ако имах клас Foo, и имаше член variable int bar, единственият начин, по който бих могъл да имам достъп до него, е да правя нещо като

Foo foo = new Foo();
doSomething(foo.bar);

Все пак, ако имам бар, е статична променлива, това означава, че имам достъп до нея, въпреки че нямам инстанция на обекта. Ще имам достъп до нея така:

doSomething(Foo.bar)

без да се налага да създавате копие на Foo.

виждам тук


1 за отговор № 2

Променливата за член е една за обект, всеки обект има собствено копие на променливата на променливата, докато променливата за клас е една за клас, всеки обект от този клас споделя една и съща променлива на класа.

Променлива от клас, наречена също така като статична променливасе инициализира, когато JVM зарежда класа, може да вземе пример за статичен блок, ако в програмата няма основен метод, докато това не важи за вашите променливи.

Класните променливи трябва да се използват, когато не искате да имате копие за всеки инстанция, докато променливите на член трябва да се използват, когато искате отделно копие за всяко копие на обект.

От точката на променливите на класовете за събиране на отпадъциимат дълъг живот, тъй като класовите променливи се свързват с класа, а не с индивидуалния пример. клас променливи се почистват, когато ClassLoader, които държат клас освободен. Това е много рядко, но в случай на променливи на членовете, те се почистват, когато инстанцията бъде почистена. Надявам се това да помогне.