#java #string #constructor #static #default-constructor
#java #строка #конструктор #статический #default-constructor
Вопрос:
public class StaticFinalExample {
static String str;
public void StaticFinalExample() {
System.out.println("In Constr");
str = "H";
}
public static void main(String[] args) {
StaticFinalExample t = new StaticFinalExample();
System.out.println(str);
}
}
В приведенном выше примере вывод равен null.
Почему конструктор не был вызван?
Комментарии:
1. он вызывается, но метод, который у вас есть, нет, потому что это не конструктор. удалите ключевое слово void и повторите попытку. ‘void’ — это возвращаемый тип, конструкторы его не имеют
2. @Stultuske да, вы правы. Здесь я допустил ошибку. Спасибо!
Ответ №1:
Конструкторы не имеют возвращаемого типа. В вашем методе StaticFinalExample() не должно быть void
, если это ваш конструктор.
Ответ №2:
Избегайте использования имени класса в качестве имени метода, это неоднозначно. Когда мы замечаем, что какое-либо имя имеет то же значение, что и class, наш разум воспринимает его как имя класса, а не как фактическое использование (в вашем случае название метода).
Это не очень хорошая практика. Это не означает, что вы не можете использовать имя метода в качестве имени класса, но вам следует избегать использования того же имени.