方法头中'static'的含义是什么?

时间:2012-03-09 06:41:02

标签: java static-methods

我想了解'staticNumbers'方法标题中'static'这个词的作用是什么?:

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 个答案:

答案 0 :(得分:20)

术语static表示该方法在类级别可用,因此不需要在调用对象之前对其进行实例化。

因为writeNumbers是从一个本身static的方法调用的,所以它只能调用其他静态方法,除非它首先使用以下内容实例化DisplayClass的新对象: p>

DisplayClass displayClass = new DisplayClass();

只有在实例化此对象后才能调用非静态方法,例如:

displayClass.nonStaticMethod();

答案 1 :(得分:2)

来自Oracle Java Tutorial逐字:

  

Java编程语言支持静态方法和静态变量。静态方法在其声明中具有静态修饰符,应该使用类名调用,而无需创建类的实例...

它不需要实例化一个类来使用有问题的方法。你给那个方法提供了适当的参数,它会返回一些合适的东西。

答案 2 :(得分:2)

为了澄清Crollster的答案,我想指出两件事。

首先:

按类级别,这意味着您可以通过在问题中的示例中键入“DisplayClass.writeNumbers()”来访问它,而无需使用“new DisplayClass();”。

第二

从类级别来看,它还意味着代码库不会复制到任何实例,因此您可以获得更小的内存占用。

答案 3 :(得分:1)

静态元素属于类而不是Object。

所以static method属于类,可以直接访问,如下所示。

public class MyClass{
public static void display(){
}
..
..
}
.
.
..
MyClass.display();

答案 4 :(得分:0)

Static告诉编译器该方法与声明它的类的任何实例成员都没有关联。也就是说,该方法与类相关联,而不是与类的实例相关联。