在这个简单的例子中,static关键字的目的是什么?

Mer*_*ury 5 java static

可能重复:
方法何时应该是静态的?

通常在为类编写静态方法时,可以使用该方法访问该方法ClassName.methodName.在这个简单的例子中使用'static'的目的是什么?为什么应该/不应该在这里使用它?私有静态也失败了使用静态的目的?

public class SimpleTest { 

   public static void main(String[] args) {
         System.out.println("Printing...");
         // Invoke the test1 method - no ClassName.methodName needed but works fine?
         test1(5);
   }

   public static void test1(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   public void test2(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   private static void test3(int n1) {
         System.out.println("Number: " + n1.toString());
   }
}
Run Code Online (Sandbox Code Playgroud)

我看了几个教程.例如http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

我对它的理解是,不是创建一个类的实例来使用该方法,而是可以使用类名 - 在某些情况下节省内存,每次使用特定方法构建对象都没有意义.

joe*_*han 1

在这个例子中,静态用于直接访问方法。私有静态方法违背了“数据隐藏”的目的。

你的 main 可以直接调用 test1 方法,因为它也是静态的,它不需要任何对象来通信。Main不能引用non-static成员,或者任何其他非静态成员不能引用静态成员。

"non-static members cannot be referred from a static context"

您可以参考此线程以获取有关静态成员的更多信息。