что означает «статический» в заголовке метода? - PullRequest
6 голосов
/ 09 марта 2012

Я хочу понять, что делает слово «static» в заголовке метода «writeNumbers» ?:

public class DisplayClass {

    /**
     * @param args
     */
    public static void main(String[] args) {
        writeNumbers();
    }

    public static void writeNumbers()
    {
        int count;
        for(count=1; count<=20; count++)
        {
            System.out.println(count);
        }
    }
}

Ответы [ 5 ]

20 голосов
/ 09 марта 2012

Термин static означает, что метод доступен на уровне класса, и, следовательно, не требует создания экземпляра объекта до его вызова.

Поскольку writeNumbers вызывается из метода, которыйсам по себе static он может вызывать только другие статические методы, если только он сначала не создает новый объект DisplayClass, используя что-то вроде:

DisplayClass displayClass = new DisplayClass();

только после того, как этот объект был создан, могут нестатические методы бытьназывается, например:

displayClass.nonStaticMethod();
2 голосов
/ 09 марта 2012

Чтобы уточнить ответ Crollster, я хотел бы указать на 2 вещи.

Во-первых:

По уровню класса это означает, что вы можете получить к нему доступ, введя «DisplayClass.writeNumbers ()», в соответствии с вашим примером в вопросе, без необходимости использовать «new DisplayClass ();».

Второе:

По уровню класса это также означает, что база кода не копируется ни в какие экземпляры, поэтому вы получаете меньший объем памяти.

2 голосов
/ 09 марта 2012

Из Oracle Java Tutorial дословно:

Язык программирования Java поддерживает статические методы, а также статические переменные. Статические методы, которые имеют модификатор static в своих объявлениях, должны вызываться с именем класса без необходимости создания экземпляра класса ...

Вы не должны создавать экземпляр класса для использования рассматриваемого метода. Вы передадите этому методу соответствующие параметры, и он вернет какую-то подходящую вещь.

1 голос
/ 09 марта 2012

статические элементы принадлежат классу, а не объекту.

поэтому статический метод принадлежит классу, к которому можно получить прямой доступ, как показано ниже.

public class MyClass{
public static void display(){
}
..
..
}
.
.
..
MyClass.display();
0 голосов
/ 09 марта 2012

Static сообщает компилятору, что метод не связан ни с одним экземпляром класса, в котором он объявлен.Таким образом, метод связан с классом, а не с экземпляром класса.

...