我已经读过这篇文章了。
方法中的“静态”关键字有什么作用?
我记得有人告诉我静态!= 紧贴...但这几乎就是我对这个关键字的全部了解。
静态类变量可以被认为是一个全局类。不管你有多少类的实例,每个静态变量只有一个实例。
静态方法不使用任何非静态类变量,它们可以直接从类外部调用,而无需实例化类本身。
静态变量和方法属于类而不是实例,尽管您可以从实例引用中引用它们。通常,您使用类名称来访问它们。
如果一个方法被声明为静态的,你就不需要定义它的对象的实例来调用它。现在,您可能想知道何时会出现这种情况?考虑java的main方法
公共静态无效主要(字符串 [] 参数)
为什么它被声明为静态的?这是因为为了启动你的程序,这个方法应该开始执行。而且,由于程序尚未初始化,因此您无法创建声明它的类的实例。因此,您需要将该类声明为公共的。而且,当类通过
java 你的类名
除此之外,静态方法用于修改静态变量。他们不能操纵非静态实例变量。
另外,请注意,静态在另一种语言(如 C)中具有不同的含义。
静态方法属于定义它的类,而不是该类的对象的实例,就像非静态方法一样。作为不属于类实例的副作用,尝试访问静态方法中的非静态字段是编译错误。静态方法没有“this”来访问非静态字段。
Java Math 类就是一个很好的例子,因为它加载了静态方法。您永远不会创建 Math 类的实例,您只需直接从该类中调用方法。
Math.abs(3.14);
方法中静态变量的值存储在对该方法的调用之间
public void method() {
static int callCount = 0;
callCount++;
System.out.println("Calls: " + callCount);
}
method(); // "Calls: 1"
method(); // "Calls: 2"
method(); // "Calls: 3"
请注意,这与静态方法完全不同。在定义它的类而不是此类的实例上调用静态方法。
class MyClass {
public static void staticMethod() { ... }
public void nonStaticMethod();
}
Myclass.staticMethod();
MyClass instance = new MyClass();
instance.nonStaticMethod();
静态方法是为类建立的方法。它不需要(也没有)this
指针,也不能访问实例数据。所以你可以写一些东西
public class Hello {
void instanceHello() {
System,out.println("Hello from the instance.");
}
public static void main(int argc, String[] argv){
// The main method is defined even though there are no instances
System.out.println("Hello from main.");
instanceHello(); // but this is a syntax error;
Hello h = new Hello();
h.instanceHello(); // this isn't though
}
}