Java: Wann werden statische Methoden verwendet?

911

Ich frage mich, wann ich statische Methoden anwenden soll. Angenommen, ich habe eine Klasse mit einigen Gettern und Setzern, eine oder zwei Methoden, und ich möchte, dass diese Methoden nur für ein Instanzobjekt der Klasse aufgerufen werden können. Heißt das, ich sollte eine statische Methode verwenden?

z.B

Obj x = new Obj();
x.someMethod

oder

Obj.someMethod

(Ist das der statische Weg?)

Ich bin ziemlich verwirrt!

KP65
quelle

Antworten:

1458

Eine Faustregel: Fragen Sie sich: "Ist es sinnvoll, diese Methode aufzurufen, auch wenn noch kein Objekt erstellt wurde?" Wenn ja, sollte es definitiv statisch sein.

In einer Klasse haben CarSie möglicherweise eine Methode:

double convertMpgToKpl(double mpg)

... was statisch wäre, weil man vielleicht wissen möchte, in was 35mpg konvertiert, selbst wenn noch niemand ein gebaut hat Car. Aber diese Methode (die die Effizienz einer bestimmten festlegt Car):

void setMileage(double mpg)

... kann nicht statisch sein, da es unvorstellbar ist, die Methode aufzurufen, bevor eine erstellt Carwurde.

(Übrigens ist das Gegenteil nicht immer der Fall: Manchmal haben Sie eine Methode, die zwei CarObjekte umfasst, und möchten dennoch, dass sie statisch ist. ZB:

Car theMoreEfficientOf( Car c1, Car c2 )

Obwohl dies in eine nicht statische Version konvertiert werden könnte, würden einige argumentieren, dass CarSie einen Anrufer nicht zwingen sollten, eine Carals das Objekt auszuwählen, das Sie aufrufen , da es keine "privilegierte" Auswahl gibt, die wichtiger ist Methode auf. Diese Situation macht jedoch einen relativ kleinen Teil aller statischen Methoden aus.)

nicht nur Yeti
quelle
325
Ein paar gute Beispiele hier. Ich würde jedoch hinzufügen, dass "statisch" oft wertvoll ist, wenn Sie wissen, dass sich etwas nicht instanzübergreifend ändern wird. Wenn dies der Fall ist, würde ich wirklich das "Prinzip der Einzelverantwortung" in Betracht ziehen, das impliziert, dass eine Klasse eine Verantwortlichkeit und damit nur einen Grund für eine Änderung haben sollte. Ich denke, man sollte in Betracht ziehen, die Funktion "ConvertMpgToKpl (double mpg)" und ähnliche Methoden in ihre eigene Klasse zu verschieben. Der Zweck eines Autoobjekts besteht darin, die Instanziierung von Autos zu ermöglichen und keinen Vergleich zwischen ihnen bereitzustellen. Diese sollten außerhalb der Klasse liegen.
Zack Jannsen
34
Ich denke ich würde lieber die Methode Car#isMoreEfficientThan(Car). Es hat den Vorteil, dass das Auto, das Sie bei einem Unentschieden zurückgeben, nicht willkürlich ist. Aus dem Titel der Methode geht hervor, was bei einem Unentschieden zurückgegeben wird.
Cruncher
5
Ich würde auch vorsichtig sein, wenn ich eine statische Methode erstelle, die eine externe Ressource (Dateisystem, Datenbank usw.) verwendet. Diese Art von statischer Methode kann es schrecklich machen, die konsumierenden Methoden zu testen. Ich persönlich versuche, die Statik im Bereich des "Nutzens" zu halten.
Seth M.
7
Tatsächlich sollte es als Komparator implementiert werden .
Dogweather
3
@ B1KMusic Natürlich. Was ich mit "welches Auto in einem Unentschieden zurückgegeben wird" meine, sind "wahre Karten für das angerufene Auto und falsche Karten für das vorbeifahrende Auto". Es ist ohne Mehrdeutigkeit.
Cruncher
538

Definieren Sie statische Methoden nur in den folgenden Szenarien:

  1. Wenn Sie Dienstprogrammklassen schreiben und diese nicht geändert werden sollen.
  2. Wenn die Methode keine Instanzvariable verwendet.
  3. Wenn eine Operation nicht von der Instanzerstellung abhängig ist.
  4. Wenn es Code gibt, der von allen Instanzmethoden problemlos gemeinsam genutzt werden kann, extrahieren Sie diesen Code in eine statische Methode.
  5. Wenn Sie sicher sind, dass die Definition der Methode niemals geändert oder überschrieben wird. Da statische Methoden nicht überschrieben werden können.
Mohd
quelle
45
Gute Punkte, aber sie sind Anforderungen, wenn Sie eine Methode statisch machen möchten , keine Gründe, eine zu erstellen.
Tetsuo
4
@Mohd zu Anforderung 5: Wann können Sie 100% sicher sein, dass eine Methode niemals geändert oder überschrieben wird? Gibt es nicht immer unbekannte Faktoren, die Sie beim Schreiben Ihrer statischen Methode nicht berücksichtigen können?
PixelPlex
8
"Utility-Klassen" sind sehr schwer zu begründen, das Schlimme ist, dass früher oder später alles wie ein Utility aussieht (ja, ich beziehe mich auf dieses "util" -Paket, das aufgebläht, unantastbar und schlecht getestet ist). und Ihre Testfälle benötigen mehr Arbeit (statische Utils zu verspotten ist SCHWER). Bevorzugen Sie zuerst Objekte.
Sergio
2
@Mohd diese Antwort ist genau das, wonach ich suche. Ich hatte viele Probleme mit statischen Methoden beim Multithreading. Können Sie bitte die Punkte 2, 3 näher erläutern (mit Beispiel 100 Daumen hoch für Sie)
Prakash Pandey
Ich denke, eine "statische Klasse" sollte erfunden werden, wenn Sie statische Variablen und Methoden verwenden wollen.
Robert Rocha
182

Es gibt einige triftige Gründe für die Verwendung statischer Methoden:

  • Leistung : Wenn Sie möchten, dass Code ausgeführt wird, und kein zusätzliches Objekt dafür instanziieren möchten, verschieben Sie ihn in eine statische Methode. Die JVM kann auch statische Methoden stark optimieren (ich glaube, ich habe einmal James Gosling gelesen, der erklärt, dass Sie keine benutzerdefinierten Anweisungen in der JVM benötigen, da statische Methoden genauso schnell sind, aber die Quelle nicht finden konnten - also es könnte völlig falsch sein). Ja, es ist eine Mikrooptimierung und wahrscheinlich nicht erforderlich. Und wir Programmierer machen niemals unnötige Dinge, nur weil sie cool sind, oder?

  • Praktikabilität : Anstatt new Util().method(arg)anzurufen Util.method(arg), anzurufen oder method(arg)statisch zu importieren. Einfacher, kürzer.

  • Hinzufügen von Methoden : Sie wollten wirklich, dass die Klasse String eine removeSpecialChars()Instanzmethode hat, diese ist jedoch nicht vorhanden (und sollte es auch nicht sein, da sich die Sonderzeichen Ihres Projekts möglicherweise von denen der anderen Projekte unterscheiden), und Sie können sie nicht hinzufügen (seit Java) ist etwas vernünftig), also erstellen Sie eine Utility-Klasse und rufen removeSpecialChars(s)stattdessen auf s.removeSpecialChars(). Süss.

  • Reinheit : Wenn Sie einige Vorsichtsmaßnahmen treffen, ist Ihre statische Methode eine reine Funktion , das heißt, das einzige, von dem sie abhängt, sind ihre Parameter. Daten rein, Daten raus. Dies ist einfacher zu lesen und zu debuggen, da Sie keine Vererbungsprobleme haben, über die Sie sich Sorgen machen müssen. Sie können dies auch mit Instanzmethoden tun, aber der Compiler hilft Ihnen ein wenig mehr mit statischen Methoden (indem er keine Verweise auf Instanzattribute, überschreibende Methoden usw. zulässt).

Sie müssen auch eine statische Methode erstellen, wenn Sie einen Singleton erstellen möchten, aber ... nicht. Ich meine, überleg es dir zweimal.

Was noch wichtiger ist: Warum möchten Sie keine statische Methode erstellen? Grundsätzlich geht der Polymorphismus aus dem Fenster . Sie können die Methode weder überschreiben noch in einer Schnittstelle (vor Java 8) deklarieren . Ihr Design nimmt viel Flexibilität in Anspruch. Wenn Sie einen Status benötigen, treten außerdem viele Parallelitätsfehler und / oder Engpässe auf, wenn Sie nicht vorsichtig sind.

Tetsuo
quelle
1
Viele gute Gründe, warum statisch nützlich sein kann. Eine weitere, die ich mir
vorstellen
@tetsuo Danke! Ihre Erklärung ist sehr klar und die Gründe sind sehr logisch und sehr sinnvoll.
Deniss M.
3
Und wir Programmierer machen niemals unnötige Dinge, nur weil sie cool sind, oder? +1
Scaramouche
Das heißt, eine statische Methode wird eine voll benannte Funktion stackoverflow.com/questions/155609/…
Ivanzinho
Ich stimme Leistung und Praktikabilität zu, aber nicht Reinheit. Die statische Methode kann statische Mitglieder der Klasse ändern (die privat sein können). Dies kann nützlich sein. Beispielsweise könnten Sie eine Methode wie "static synchronized int allocateID () {return idNext ++;}" verwenden. Tatsächlich kann eine statische Methode in Bezug auf Nebenwirkungen genauso rein oder unrein sein wie eine nicht statische Methode.
Adam Gawne-Cain
42

Nach dem Lesen von Miskos Artikeln glaube ich, dass statische Methoden unter Testgesichtspunkten schlecht sind. Sie sollten stattdessen Fabriken haben (möglicherweise mit einem Tool zur Abhängigkeitsinjektion wie Guice ).

Wie stelle ich sicher, dass ich nur eines von etwas habe?

nur eines von etwas haben Das Problem „Wie stelle ich sicher, dass ich nur eines von etwas habe“ ist gut umgangen. Sie instanziieren nur eine einzige ApplicationFactory in Ihrer Haupt- und daher nur eine einzige Instanz aller Ihrer Singletons.

Das grundlegende Problem bei statischen Methoden ist, dass es sich um prozeduralen Code handelt

Das grundlegende Problem bei statischen Methoden ist, dass es sich um prozeduralen Code handelt. Ich habe keine Ahnung, wie man Prozedurcode testet. Beim Unit-Test wird davon ausgegangen, dass ich einen Teil meiner Anwendung isoliert instanziieren kann. Während der Instanziierung verkabele ich die Abhängigkeiten mit Mocks / Friendlies, die die realen Abhängigkeiten ersetzen. Bei der prozeduralen Programmierung gibt es nichts zu "verdrahten", da es keine Objekte gibt, der Code und die Daten getrennt sind.

Alfred
quelle
20
Ich verstehe den Teil nicht, in dem es nicht möglich ist, prozeduralen Code zu testen. Richten Sie nicht einfach Testfälle ein, die die korrekte Eingabe mit der statischen Methode zusammen mit der Klasse als "Einheit" der korrekten Ausgabe zuordnen?
tjb
2
Sie können dies tun, um diese Funktionen zu testen. Aber wenn Sie diese statischen Methoden in anderen Klassen verwenden, die Sie testen möchten, können Sie sie meiner Meinung nach nicht fälschen (Verspottungen / Freundschaftsspiele) oder so, weil Sie eine Klasse nicht instanziieren können.
Alfred
4
@Alfred: Bitte schauen Sie sich PowerMock an, das statische Methoden verspotten kann. Mit PowerMock gibt es nur wenige Szenarien, in denen Sie Methodenabhängigkeiten finden, die nicht verspottet werden können.
Carles Sala
7
Sie können Statics mit PowerMock testen, aber Sie werden bald feststellen, dass Ihnen der Permgen-Platz ausgeht (getan, das T-Shirt bekommen), und es ist immer noch böse. Es sei denn, Sie wissen (basierend auf mindestens einem Jahrzehnt Ihrer eigenen Erfahrung in echten OO-Sprachen, ohne von C zu migrieren), dann tun Sie es nicht. Im Ernst, der schlechteste Code, den ich je gesehen habe, kam von der Verwendung von Statik durch einen eingebetteten Entwickler, und in den meisten Fällen blieben wir für immer dabei, und das Hinzufügen von mehr Code hat uns nur noch enger in den nicht modifizierbaren Monolithen eingeschlossen. Lose Kupplung: nein, prüfbar: kaum veränderbar: NIE. Vermeiden!
user1016765
14
Ich kann die Schwierigkeit verstehen, statische Methoden zu testen, die vom statischen Zustand abhängen. Aber wenn Sie zustandslose statische Methoden wie Math.abs()oder Arrays.sort()sogar Methoden testen , an die Sie alle Abhängigkeiten übergeben können , sehe ich nicht, wie dies jemals das Testen von Einheiten behindern würde. Ich würde sagen, eine einfache Faustregel lautet: Wenn Sie jemals einen Grund haben würden, die prozedurale Logik zu verspotten, dann setzen Sie sie nicht in eine statische Methode. Ich hatte noch nie einen Grund, mich lustig zu machen Arrays.sort()oder Math.abs().
Andy
36

Eine staticMethode ist eine Art von Methode, für deren Aufruf kein Objekt initialisiert werden muss. Haben Sie bemerkt static, dass in der mainFunktion in Java verwendet wird? Von dort aus beginnt die Programmausführung, ohne dass ein Objekt erstellt wird.

Betrachten Sie das folgende Beispiel:

 class Languages 
 {
     public static void main(String[] args) 
     {
         display();
     }

     static void display() 
     {
         System.out.println("Java is my favorite programming language.");
     }
  }
Zishan
quelle
beste Antwort eigentlich
Yahya
20

Statische Methoden in Java gehören zur Klasse (keine Instanz davon). Sie verwenden keine Instanzvariablen und nehmen normalerweise Eingaben von den Parametern entgegen, führen Aktionen dafür aus und geben dann ein Ergebnis zurück. Instanzmethoden sind Objekten zugeordnet und können, wie der Name schon sagt, Instanzvariablen verwenden.

Kevin Sylvestre
quelle
12

Nein, statische Methoden sind keiner Instanz zugeordnet. Sie gehören zur Klasse. Statische Methoden sind Ihr zweites Beispiel. Instanzmethoden sind die ersten.

Duffymo
quelle
1
Sie sollten statische Methoden verwenden, wenn Sie keine Zustandsmanipulationen des Objekts benötigen.
MastAvalons
11

Wenn Sie ein statisches Schlüsselwort mit einer Methode anwenden, wird dies als statische Methode bezeichnet.

  1. Eine statische Methode gehört eher zur Klasse als zum Objekt einer Klasse.
  2. Eine statische Methode, die aufgerufen wird, ohne dass eine Instanz einer Klasse erstellt werden muss.
  3. Die statische Methode kann auf statische Datenelemente zugreifen und deren Wert ändern.
  4. Auf eine statische Methode kann nur mit dem Namen eines statischen Klassenpunktnamens zugegriffen werden. . . Beispiel: Student9.change ();
  5. Wenn Sie nicht statische Felder einer Klasse verwenden möchten, müssen Sie eine nicht statische Methode verwenden.

// Programm zum Ändern der gemeinsamen Eigenschaft aller Objekte (statisches Feld).

class Student9{  
 int rollno;  
 String name;  
 static String college = "ITS";  

 static void change(){  
 college = "BBDIT";  
 }  

 Student9(int r, String n){  
 rollno = r;  
 name = n;  
 }  

 void display (){System.out.println(rollno+" "+name+" "+college);}  

public static void main(String args[]){  
Student9.change();  

Student9 s1 = new Student9 (111,"Indian");  
Student9 s2 = new Student9 (222,"American");  
Student9 s3 = new Student9 (333,"China");  

s1.display();  
s2.display();  
s3.display();  
}  }

O / P: 111 indische BBDIT 222 amerikanische BBDIT 333 China BBDIT

IndianProgrammer1234
quelle
10

Statische Methoden sind keiner Instanz zugeordnet, sodass sie nicht auf nicht statische Felder in der Klasse zugreifen können.

Sie würden eine statische Methode verwenden, wenn die Methode keine Felder (oder nur statische Felder) einer Klasse verwendet.

Wenn nicht statische Felder einer Klasse verwendet werden, müssen Sie eine nicht statische Methode verwenden.

Carsten
quelle
1
Klare, kurze und einfache Antwort.
Josi
8

Statische Methoden sollten für die Klasse aufgerufen werden, Instanzmethoden sollten für die Instanzen der Klasse aufgerufen werden. Aber was bedeutet das in Wirklichkeit? Hier ist ein nützliches Beispiel:

Eine Fahrzeugklasse verfügt möglicherweise über eine Instanzmethode namens Accelerate (). Sie können ein Auto nur beschleunigen, wenn das Auto tatsächlich existiert (konstruiert wurde) und dies daher eine Instanzmethode wäre.

Eine Fahrzeugklasse verfügt möglicherweise auch über eine Zählmethode namens GetCarCount (). Dies würde die Gesamtzahl der erstellten (oder gebauten) Autos zurückgeben. Wenn keine Autos gebaut worden wären, würde diese Methode 0 zurückgeben, sollte aber dennoch aufgerufen werden können, und daher müsste es sich um eine statische Methode handeln.

Charlie Seligman
quelle
6

Tatsächlich verwenden wir statische Eigenschaften und Methoden in einer Klasse, wenn wir einen Teil unseres Programms verwenden möchten, der dort vorhanden sein sollte, bis unser Programm ausgeführt wird. Und wir wissen, dass wir zur Manipulation statischer Eigenschaften statische Methoden benötigen, da diese nicht Teil der Instanzvariablen sind. Und ohne statische Methoden ist das Manipulieren statischer Eigenschaften zeitaufwändig.

Sagar
quelle
Das Beibehalten des Status in statischen Variablen ist aus vielen Gründen eine schlechte Sache - wie Multithreading-Sicherheit, Debugging, Datenkapselung usw. usw. Statische Methoden sind in Ordnung, wenn es sich um reine Funktionen handelt (nur mit Parametern arbeiten, ohne sie zu ändern). Ein gutes Beispiel wäre eine Utility-Klasse, zum Beispiel mathematische Berechnungen.
Vladimir Demirev
5

Verwenden Sie eine statische Methode, wenn Sie ohne Instanz der Klasse auf die Methode zugreifen möchten.

Jamey
quelle
29
Dies gibt keine Begründung für die Gestaltung eines Programms.
Adamjmarkham
4

Statisch: Obj.someMethod

Verwenden staticSie diese Option, wenn Sie Zugriff auf Klassenebene auf eine Methode gewähren möchten, dh wenn die Methode ohne eine Instanz der Klasse aufgerufen werden soll.

Finbarr
quelle
4

Statische Methoden müssen nicht für das Objekt aufgerufen werden, und dann verwenden Sie es. Beispiel: Ihr Main () ist statisch und Sie erstellen kein Objekt, um es aufzurufen.

Vaishak Suresh
quelle
1
Yay! Schauen Sie, wo ich beim Googeln von Java Noobie-Fragen hergekommen bin! Es ist eine kleine Welt :-)
Deepak
1
@ Deepak kleine Welt in der Tat :)
Vaishak Suresh
4

Statische Methoden und Variablen sind kontrollierte Versionen von 'globalen' Funktionen und Variablen in Java. Auf welche Methoden als classname.methodName()oder zugegriffen werden kann classInstanceName.methodName(), dh auf statische Methoden und Variablen kann unter Verwendung des Klassennamens sowie von Instanzen der Klasse zugegriffen werden.

Klasse kann nicht als statisch deklariert werden (da dies keinen Sinn ergibt. Wenn eine Klasse als öffentlich deklariert wird, kann von überall auf sie zugegriffen werden), können innere Klassen als statisch deklariert werden.

Manju Yadav
quelle
3

Statische Methoden können verwendet werden, wenn

  • Man möchte keine Aktion für eine Instanz ausführen (Dienstprogrammmethoden)

    Wie in einigen der obigen Antworten in diesem Beitrag erwähnt, können Sie Meilen in Kilometer umrechnen oder die Temperatur von Fahrenheit in Celsius berechnen und umgekehrt. Bei diesen Beispielen mit statischer Methode muss kein ganz neues Objekt im Heapspeicher instanziiert werden. Betrachten Sie unten

    1. new ABCClass(double farenheit).convertFarenheitToCelcium() 
    2. ABCClass.convertFarenheitToCelcium(double farenheit)

    Ersteres erstellt einen neuen Klassen-Footprint für jede aufgerufene Methode, Performance, Practical . Beispiele sind die folgende StringUtils-Klasse der Math- und Apache-Commons-Bibliothek:

    Math.random()
    Math.sqrt(double)
    Math.min(int, int)
    StringUtils.isEmpty(String)
    StringUtils.isBlank(String)
  • Man möchte als einfache Funktion verwenden. Eingaben werden explizit übergeben und die Ergebnisdaten als Rückgabewert abgerufen. Vererbung, Objektinstanziierung kommt nicht ins Bild. Prägnant, lesbar .

HINWEIS : Nur wenige Leute sprechen sich gegen die Testbarkeit statischer Methoden aus, aber auch statische Methoden können getestet werden! Mit jMockit kann man statische Methoden verspotten. Testbarkeit . Beispiel unten:

new MockUp<ClassName>() {
    @Mock
    public int doSomething(Input input1, Input input2){
        return returnValue;
    }
};
Amit Kaneria
quelle
3

Statische Methoden sind die Methoden in Java, die aufgerufen werden können, ohne ein Klassenobjekt zu erstellen. Es gehört zur Klasse.

Wir verwenden eine statische Methode, wenn die Methode nicht mithilfe einer Instanz aufgerufen werden muss.

Hautausschläge
quelle
2

Ich frage mich, wann ich statische Methoden anwenden soll.

  1. Eine häufige Verwendung für staticMethoden ist der Zugriff auf staticFelder.
  2. Sie können jedoch staticMethoden verwenden, ohne auf staticVariablen zu verweisen . Hilfsmethoden ohne referenzierende staticVariable finden Sie in einigen Java-Klassen wie java.lang.Math

    public static int min(int a, int b) {
        return (a <= b) ? a : b;
    }
  3. Der andere Anwendungsfall, den ich mir vorstellen kann, synchronizedist die Implementierung der Sperrung auf Klassenebene in einer Umgebung mit mehreren Threads.

Angenommen, ich habe eine Klasse mit einigen Gettern und Setzern, eine oder zwei Methoden, und ich möchte, dass diese Methoden nur für ein Instanzobjekt der Klasse aufgerufen werden können. Heißt das, ich sollte eine statische Methode verwenden?

Wenn Sie auf eine Methode für ein Instanzobjekt der Klasse zugreifen müssen, sollte Ihre Methode nicht statisch sein.

Oracle - Dokumentation Seite liefert weitere Informationen.

Nicht alle Kombinationen von Instanz- und Klassenvariablen und -methoden sind zulässig:

  1. Instanzmethoden können direkt auf Instanzvariablen und Instanzmethoden zugreifen.
  2. Instanzmethoden können direkt auf Klassenvariablen und Klassenmethoden zugreifen.
  3. Klassenmethoden können direkt auf Klassenvariablen und Klassenmethoden zugreifen.
  4. Klassenmethoden können nicht direkt auf Instanzvariablen oder Instanzmethoden zugreifen - sie müssen eine Objektreferenz verwenden. Außerdem können Klassenmethoden das Schlüsselwort this nicht verwenden, da es keine Instanz gibt, auf die dies verweisen kann.
Ravindra Babu
quelle
Können wir nicht mit regulären Methoden auf statische Felder zugreifen? Dann ist dies A common use for static methods is to access static fields.kein Argument.
Parsecer
2

Eine statische Methode hat zwei Hauptziele:

  1. Für Dienstprogramm- oder Hilfsmethoden, für die kein Objektstatus erforderlich ist. Da nicht auf Instanzvariablen zugegriffen werden muss, muss der Aufrufer durch statische Methoden das Objekt nicht mehr instanziieren, nur um die Methode aufzurufen.
  2. Für den Status, der von allen Instanzen der Klasse gemeinsam genutzt wird, z. B. ein Zähler. Alle Instanzen müssen denselben Status haben. Methoden, die lediglich diesen Status verwenden, sollten ebenfalls statisch sein.
Hemanto
quelle
1

In Eclipse können Sie eine Warnung aktivieren, mit der Sie potenzielle statische Methoden erkennen können. (Über der hervorgehobenen Linie befindet sich eine weitere, die ich vergessen habe hervorzuheben)

Eclipse-Einstellung

ave4496
quelle
0

Wenn Sie kein Objekt zum Aufrufen einer Methode in Ihrem Code erstellen möchten, deklarieren Sie diese Methode einfach als statisch. Da für die statische Methode keine Instanz aufgerufen werden muss, aber der Haken hier ist, werden nicht alle statischen Methoden von JVM automatisch aufgerufen. Dieses Privileg wird nur von der main () -Methode "public static void main [String ... args]" in Java genutzt, da dies zur Laufzeit die von JVM als Einstiegspunkt gesuchte Methode Signature public "static" void main [] ist Starten Sie die Ausführung des Codes.

Beispiel:

public class Demo
{
   public static void main(String... args) 
   {
      Demo d = new Demo();

      System.out.println("This static method is executed by JVM");

     //Now to call the static method Displ() you can use the below methods:
           Displ(); //By method name itself    
      Demo.Displ(); //By using class name//Recommended
         d.Displ(); //By using instance //Not recommended
   }

   public static void Displ()
   {
      System.out.println("This static method needs to be called explicitly");
   }
} 

Ausgabe: - Diese statische Methode wird von JVM ausgeführt. Diese statische Methode muss explizit aufgerufen werden. Diese statische Methode muss explizit aufgerufen werden. Diese statische Methode muss explizit aufgerufen werden

Amrit
quelle