если переменная находится в той же области видимости, вы получите ошибку компилятора; однако, как вы выяснили, если переменная находится в другой области видимости, вы замаскируете первое объявление.
олжен быть канонический вопрос и ответ на аналогичные вопросы, где проблема является результатомслежка.
Я определил два поля в своем классе, одно ссылочного типа и одно примитивного типа. В конструкторе класса я пытаюсь инициализировать их некоторыми пользовательскими значениями.
Когда я позже запрашиваю значения этих полей, они возвращаются со значениями по умолчанию Java для них,null
для ссылочного типа и 0 для примитивного типа. Почему это происходит?
Вот воспроизводимый пример:
public class Sample {
public static void main(String[] args) throws Exception {
StringArray array = new StringArray();
System.out.println(array.getCapacity()); // prints 0
System.out.println(array.getElements()); // prints null
}
}
class StringArray {
private String[] elements;
private int capacity;
public StringArray() {
int capacity = 10;
String[] elements;
elements = new String[capacity];
}
public int getCapacity() {
return capacity;
}
public String[] getElements() {
return elements;
}
}
Я ожидалgetCapacity()
вернуть значение 10 иgetElements()
вернуть правильно инициализированный экземпляр массива.