Java的基本范例是编写类,并实例化这些类。实例化的对象(类的实例)具有与它们相关联的属性(成员变量),这些属性会影响它们的行为;当实例执行其方法时,它将引用这些变量。
但是,所有特定类型的对象可能都具有完全不依赖于成员变量的行为。这些方法最好设为静态。由于是静态的,因此不需要类的实例即可运行该方法。
你可以执行以下 *** 作来执行静态方法:
MyClass.staticMethod();//Simply refers to the class's static pre
但是要执行非静态方法,你必须执行以下 *** 作:
MyClass obj = new MyClass();//Create an instanceobj.nonstaticMethod();//Refer to the instance's class's pre
在更深层次上,当编译器将一个类放在一起时,它包含一些指向方法的指针。当执行这些方法时,它将跟随指针并在远端执行代码。如果实例化了一个类,则创建的对象将包含一个指向“虚拟方法表”的指针,该指针指向继承层次结构中该特定类要调用的方法。但是,如果该方法是静态的,则不需要“虚拟方法表”:对该方法的所有调用都将进入内存中的确切位置,以执行完全相同的代码。因此,在高性能系统中,如果你不依赖实例变量,则最好使用静态方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)