java基础静态方法

时间:2009-08-29 18:14:57

标签: java static

是否可以在构造类的单个实例之前调用静态方法?

9 个答案:

答案 0 :(得分:11)

绝对,这是静态方法的目的

class ClassName {

     public static void staticMethod() {

     }
}

要调用静态方法,必须导入类:

import ClassName;
// ...
ClassName.staticMethod();

或使用静态导入(Java 5或更高版本):

import static ClassName.staticMethod;
// ...
staticMethod();

答案 1 :(得分:2)

是的,这正是静态方法的用途。

ClassName.staticMethodName();

答案 2 :(得分:2)

正如其他人已经建议的那样,绝对可以在没有(先前)创建实例的情况下在类上调用静态方法 - 这就是Singletons的工作方式。例如:

import java.util.Calendar;
public class MyClass 
{
    // the static method Calendar.getInstance() is used to create 
    // [Calendar]s--note that [Calendar]'s constructor is private
    private Calendar now = Calendar.getInstance();
}

如果您的意思是“是否可以在初始化第一个对象之前自动调用特定的静态方法?”,请参阅下文:

public class MyClass
{
    // the static block is garanteed to be executed before the
    // first [MyClass] object is created.
    static {
        MyClass.init();
    }

    private static void init() {
        // do something ...
    }
}

答案 3 :(得分:1)

是的,因为静态方法无法访问实例变量,所以JVM所要做的就是运行代码。

答案 4 :(得分:1)

在不实例化类的情况下调用静态方法意味着

答案 5 :(得分:0)

是的,您可以在创建任何实例之前写ClassName.methodName来访问它。

答案 6 :(得分:0)

你不仅可以这样做,而且你应该这样做。

答案 7 :(得分:0)

事实上,有许多“实用工具类”,例如MathCollectionsArraysSystem,它们是无法实例化的类,但其全部目的是为人们提供静态方法。

答案 8 :(得分:0)

是的,这绝对有可能。例如,请考虑以下示例......

class test {
    public static void main(String arg[]) {
        System.out.println("hello");
    }
 }

...如果我们运行它,它确实执行,我们从未创建过类测试的实例。简而言之,语句public static void main(String arg[])意味着在不实例化类test的情况下执行main方法。