Пояснити не так багато. Титулу достатньо, щоб пояснити це питання. Я отримав це на інтерв'ю сьогодні.
What are class variables and member variables in Java?
Дякую!
Відповіді:
3 для відповіді № 1Як сказав Жуйнден, вони, мабуть, означали статичнийзмінні замість змінних класу. Для змінних-членів для доступу до змінної необхідний екземпляр класу. Наприклад, якщо я мав клас Foo, і він мав вбудовану змінну-член, єдиним способом, яким я мав би доступ, було робити щось подібне
Foo foo = new Foo();
doSomething(foo.bar);
Однак, якщо у мене є бар статичної змінної, це означає, що я можу отримати доступ до неї, навіть якщо у мене немає примірника об'єкта.
doSomething(Foo.bar)
без створення примірника Foo.
Побачити тут
1 для відповіді № 2
Змінна члена - один на об'єкт, кожен об'єкт має свою власну копію змінної екземпляра, тоді як змінна класу є однією на клас, кожен об'єкт цього класу має однакову змінну класу.
Змінна класу також називається статичною змінноюініціалізується, коли JVM завантажує клас, ймовірно, приймає приклад статичного блоку, якщо у вашій програмі немає основного методу, тоді як це не з вашими змінними члена.
Змінні класу слід використовувати, коли ви не хочете мати копію для кожного примірника змінні-члени повинні використовуватися, коли потрібно окрему копію для кожного екземпляра об'єкта.
З точки змінних класу збирання сміттямають довге життя, оскільки змінні класу пов'язані з класом, а не з окремим екземпляром. змінні класу очищаються, коли ClassLoader, який утримує клас, вивантажується. Це дуже рідко, а у випадку змінних-членів вони очищаються, коли примірник очищається. Сподіваюся, що це допомагає.