Я продолжаю получать 0 для обоих счетчиков до и после создания x количества объектов.
class Thing {
private static int count = 0;
public Thing() {
count++;
}
public static int getCount(){
return count;
}
}
public class getCounter {
public static void main(String[] args) {
int counter = Thing.getCount();
System.out.println("Objects created: " + counter);
Thing thing1 = new Thing();
Thing thing2 = new Thing();
System.out.println("Objects created: " + counter);
}
}
2 ответа
Вам нужно позвонить getCount()
еще раз, чтобы получить обновленный счет. Если вы кешируете его в переменной, у вас всегда будет одно и то же значение.
public static void main(String[] args) {
System.out.println("Objects created: " + Thing.getCount());
Thing thing1 = new Thing();
Thing thing2 = new Thing();
System.out.println("Objects created: " + Thing.getCount());
}
Просто добавьте правильный ответ Джона и объясните - почему его ответ правильный:
Назначение значения переменной - это сохранение этого значения в этой переменной в определенный момент выполнения.
Например:
int x = Math.sqrt(25);
Средства для сохранения значения, возвращаемого Math.sqrt(25)
(который равен 5), в переменную x
.
Вы сохраняете значение, возвращенное из getCount()
, в локальной переменной counter
, но никогда не обновляете его, не обращая внимания на то, сколько объектов вы создадите, если переменная counter
останется такой, как есть, оно всегда будет иметь одинаковое значение 0
.
После того, как ваш конструктор обновит член класса counter
дважды, вы можете снова вызвать getCount()
, чтобы получить актуальное значение.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.