Was ist eine statische Methode?: 
Eine statische Methode ist eine Methode, die zu einer Klasse gehört, aber nicht zu einer Instanz dieser Klasse, und diese Methode kann ohne die Instanz oder das Objekt dieser Klasse aufgerufen werden. 
Was ist eine nichtstatische Methode?: 
Jede Methode in Java ist standardmäßig eine nichtstatische Methode ohne vorangestelltes statisches Schlüsselwort. Nicht statische Methoden können auf jede statische Methode und statische Variable zugreifen, ohne eine Instanz des Objekts zu erstellen.
Nachfolgend sind die verschiedenen wichtigen Unterschiede zwischen diesen aufgeführt: 
 

  1. Zugriff auf Mitglieder und Methoden: 
    • Bei statischen Methoden kann die Methode nur auf statische Datenelemente und statische Methoden einer anderen Klasse oder derselben Klasse zugreifen, aber nicht auf nicht statische Methoden und Variablen. Auch eine statische Methode kann die Werte jedes statischen Datenelements umschreiben. 
       
    • Bei nicht statischen Methoden kann die Methode auf statische Datenelemente und statische Methoden sowie auf nicht statische Elemente und Methoden einer anderen Klasse oder derselben Klasse zugreifen und auch die Werte aller statischen Datenelemente ändern. 
       
  2. Anrufvorgang: 
    • Bei der statischen Methode ist der Speicher einer statischen Methode im RAM fixiert, aus diesem Grund brauchen wir nicht das Objekt einer Klasse, in der die statische Methode definiert ist, um die statische Methode aufzurufen. Um die Methode aufzurufen, müssen wir den Namen der Methode gefolgt vom Klassennamen schreiben. 
       
class GFG{
 public static void geek()
 { }
}

// calling
GFG.geek();
  •  

Java

// Java program to call a static method
 
class GFG {
 
    // static method
    public static int sum(int a, int b)
    {
        return a + b;
    }
}
 
class Main {
    public static void main(String[] args)
    {
        int n = 3, m = 6;
 
        // call the static method
        int s = GFG.sum(n, m);
 
        System.out.print("sum is = " + s);
    }
}
  • Ausgabe: 
     
sum is = 9
  •  
  • Bei der nicht statischen Methode ist der Speicher der nicht statischen Methode nicht im RAM festgelegt, daher benötigen wir ein Klassenobjekt, um eine nicht statische Methode aufzurufen. Um die Methode aufzurufen, müssen wir den Namen der Methode schreiben, gefolgt vom Namen des Klassenobjekts. 
     
class GFG{
 public void geek()
 { }
}

// creating object
GFG g = new GFG();

g.geek();

// calling
  •  

Java

// Java program to call a non-static method
 
class GFG {
 
    // non-static method
    public int sum(int a, int b)
    {
        return a + b;
    }
}
 
class Main {
    public static void main(String[] args)
    {
        int n = 3, m = 6;
        GFG g = new GFG();
        int s = g.sum(n, m);
        // call the non-static method
 
        System.out.print("sum is = " + s);
    }
}
  • Ausgabe: 
     
sum is = 9
  •  
  1. Bindeprozess: 
    • Bei der statischen Methode verwendet die Methode die Kompilierzeit oder die frühe Bindung. Aus diesem Grund können wir auf die statische Methode zugreifen, ohne eine Instanz zu erstellen.
    • Bei nicht statischen Methoden verwendet die Methode die Laufzeit oder die dynamische Bindung. Damit wir nicht auf eine nicht statische Methode zugreifen können, ohne eine Instanz zu erstellen. 
       
  2. Überschreiben: 
    • In der statischen Methode können wir eine statische Methode wegen der frühen Bindung nicht überschreiben. 
      Beispiel: 
       

Java

// Override of static method
class Parent {
 
    // static method
    static void show()
    {
        System.out.println("Parent");
    }
}
 
// Parent inherit in Child class
class Child extends Parent {
 
    // override show() of Parent
    void show()
    {
        System.out.println("Child");
    }
}
 
class GFG {
    public static void main(String[] args)
    {
        Parent p = new Parent();
        // calling Parent's show()
        p.show();
        // cannot override Parent's show()
    }
}
  • Ausgabe: 
     
java:15: error: show() in Child cannot override show() in Parent
    void show()
         ^
  overridden method is static
  •  
  • In der nicht statischen Methode können wir eine nicht statische Methode überschreiben. Denn zum Überschreiben benötigen wir Laufzeitpolymorphismus, der nur beim Laufzeitbinding vorkommt. 
    Beispiel: 
     

Java

// Override of non-static method
 
class Parent {
    void show()
    {
        System.out.println("Parent");
    }
}
 
// Parent inherit in Child class
class Child extends Parent {
 
    // override show() of Parent
    void show()
    {
        System.out.println("Child");
    }
}
 
class GFG {
    public static void main(String[] args)
    {
        Parent p = new Parent();
        // calling Parent's show()
        p.show();
 
        Parent c = new Child();
        // calling Child's show()
        c.show();
    }
}
  • Fehler: 
     
Parent
Child
  •  
  1. Speicherzuweisung: 
    • Bei der statischen Methode erfolgt die Speicherzuweisung nur einmal, da das Schlüsselwort static einen bestimmten Speicher für diese Methode im RAM festgelegt hat. Wenn also die Methode jedes Mal in einem Programm aufgerufen wird, jedes Mal, wenn dieser bestimmte Speicher verwendet wird. Aus diesem Grund wird weniger Speicher zugewiesen.
       
    • Bei der nicht statischen Methode erfolgt hier die Speicherzuweisung, wenn die Methode aufgerufen wird, und der Speicher wird jedes Mal zugewiesen, wenn die Methode aufgerufen wird. Hier wird so viel Speicher verbraucht.
       

Differenztabelle: 
 

Punktestatische MethodeNicht statische Methode
DefinitionEine statische Methode ist eine Methode, die zu einer Klasse gehört, aber nicht zu einer Instanz dieser Klasse, und diese Methode kann ohne die Instanz oder das Objekt dieser Klasse aufgerufen werden.Alle Methoden in Java sind standardmäßig nicht statische Methoden, denen das statische Schlüsselwort nicht vorangestellt ist. Nicht-statische Methoden können auf jede statische Methode und auch auf statische Variablen zugreifen, ohne das Objekt der Klasse zu verwenden.
Zugreifen auf Mitglieder und MethodenBei einer statischen Methode kann die Methode nur auf statische Datenelemente und statische Methoden einer anderen Klasse oder derselben Klasse zugreifen, aber nicht auf nicht statische Methoden und Variablen.Bei nicht statischen Methoden kann die Methode auf statische Datenelemente und statische Methoden sowie auf nicht statische Elemente und Methoden einer anderen Klasse oder derselben Klasse zugreifen. 
 
BindungsprozessDie statische Methode verwendet die Kompilierzeit oder die frühe Bindung.Die nicht statische Methode verwendet Laufzeit- oder dynamische Bindung.
ÜberschreibenDie statische Methode kann aufgrund der frühen Bindung nicht überschrieben werden.Eine nicht statische Methode kann aufgrund der Laufzeitbindung überschrieben werden.
SpeicherzuweisungBei der statischen Methode wird weniger Speicher für die Ausführung verwendet, da die Speicherzuweisung nur einmal erfolgt, da das Schlüsselwort static einen bestimmten Speicher für diese Methode im RAM festgelegt hat. . 
 
Bei nicht statischen Methoden wird viel Speicher für die Ausführung verwendet, da hier die Speicherzuweisung erfolgt, wenn die Methode aufgerufen wird, und der Speicher jedes Mal zugewiesen wird, wenn die Methode aufgerufen wird.