static Number n;
создает переменную stati c в классе custom_class
, к которой могут обращаться другие методы этого класса. В настоящее время у вас нет других методов, так что это не относится к вам. Когда это будет использовано? Возможно, у вас есть переменная mySpecialNumber
, которую вы будете использовать в классе. У вас могут быть разные методы, которые его используют. Один метод может умножить параметр с ним. Другой метод может добавить параметр к нему. Это будет глобальная переменная, доступная всему классу.
Так как это stati c, вам не нужно создавать экземпляр класса для его использования. Это переменная, которая стоит одна. Вам не нужно создавать объект класса, чтобы использовать его. В вашем случае вы можете использовать n
без создания экземпляра класса Number
. Это может обеспечить большую гибкость. Тем не менее, он менее безопасен и может вызвать утечку данных.
Number n = new Number();
создает переменную экземпляра объекта Number
во время выполнения. Он доступен только в методе main
. Если у вас есть другие методы в этом классе, другие методы не смогут получить доступ к значению n
. Как только переменная объявлена внутри метода, она имеет локальную область видимости этой переменной. Только строки кода в том же методе могут ссылаться на него. Ваш основной метод может как пользователь для своего возраста и сохранить его в локальной переменной в методе main.
Используя эту методологию, вы создаете экземпляр класса Number. Эта строка автоматически вызывает конструктор класса Number и создает объект типа Number, которому назначается n
. В вашем коде вы не указали конструктор, поэтому будет использоваться конструктор по умолчанию. Любые изменения, сделанные в n
, влияют только на текущее время выполнения. Они не передают в будущих прогонах программы. Объект создается в методе main и поэтому доступен только в методе main.