Java中静态和非静态方法之间的区别

Java方法是语句的集合,这些语句组合在一起以执行操作。例如,当您调用System.out.println()方法时,系统实际上会执行几条语句,以便在控制台上显示一条消息。

静态方法

静态方法也称为类方法,在类的对象之间通用,并且也可以使用类名来访问此方法。

非静态方法

非静态类的任何方法称为非静态方法或实例方法。

以下是静态方法和非静态方法之间的重要区别。

序号静态的非静态
1访问静态方法只能访问静态成员,而不能访问非静态成员。非静态方法可以访问静态成员和非静态成员。
2捆绑静态方法使用complie时间绑定或早期绑定。非静态方法使用运行时绑定或动态绑定。
3覆写静态方法不能在编译时绑定中被覆盖。动态方法可以覆盖非静态方法。
4内存分配静态方法占用的空间更少,并且内存分配只发生一次。非静态方法可能会占用更多空间。当方法完全执行后,将在调用方法并释放内存时发生内存分配。
5关键词静态方法使用static关键字声明。普通方法不需要任何特殊关键字。

静态与非静态方法示例

JavaTester.java

public class JavaTester {
   public static void main(String args[]) {
      Tiger.roar();
      Tiger tiger = new Tiger();
      tiger.eat();
   }
}
class Tiger {
   public void eat(){
      System.out.println("Tiger eats");
   }
   public static void roar(){
      System.out.println("Tiger roars");
   }
}

输出结果

Tiger roars
Tiger eats