Ihr Beitrag enthält im Wesentlichen zwei Fragen.
Zunächst zu den statischen Variablen. Statische Variablen sind völlig unnötig und ihre Verwendung kann leicht vermieden werden. In OOP-Sprachen im Allgemeinen und in Java im Besonderen werden Funktionsparameter per Referenz übergeben, das heißt, wenn Sie ein Objekt an eine Funktion übergeben, übergeben Sie einen Zeiger auf das Objekt, so dass Sie keine statischen Variablen definieren müssen, da Sie einen Zeiger auf das Objekt an jeden Bereich übergeben können, der diese Information benötigt. Auch wenn dies bedeutet, dass Sie Ihren Speicher mit Zeigern füllen, bedeutet dies nicht unbedingt eine schlechte Leistung, da die aktuellen Speicherauslagerungssysteme dafür optimiert sind und die Seiten, auf die die Zeiger verweisen, die Sie an den neuen Bereich übergeben haben, im Speicher behalten; die Verwendung statischer Variablen kann dazu führen, dass das System die Speicherseite lädt, auf der sie gespeichert sind, wenn auf sie zugegriffen werden muss (dies geschieht, wenn auf die Seite lange Zeit nicht zugegriffen wurde). Eine gute Praxis ist es, alle statischen Variablen in kleinen "Konfigurationsclases" zusammenzufassen, um sicherzustellen, dass das System sie alle in derselben Speicherseite ablegt.
Zweitens, über statische Methoden. Statische Methoden sind nicht so schlecht, aber sie können die Leistung schnell verringern. Denken Sie zum Beispiel an eine Methode, die zwei Objekte einer Klasse vergleicht und einen Wert zurückgibt, der angibt, welches der Objekte größer ist (typische Vergleichsmethode). Diese Methode kann statisch oder nicht statisch sein, aber wenn sie aufgerufen wird, ist die nicht statische Form effizienter, da sie nur zwei Referenzen (eine für jedes Objekt) lösen muss, im Gegensatz zu den drei Referenzen, die die statische Version der gleichen Methode lösen muss (eine für die Klasse plus zwei, eine für jedes Objekt). Aber wie gesagt, das ist gar nicht so schlecht, denn wenn wir uns die Klasse Math ansehen, finden wir eine Menge mathematischer Funktionen, die als statische Methoden definiert sind. Das ist wirklich effizienter, als all diese Methoden in die Klasse zu packen, die die Zahlen definiert, denn die meisten von ihnen werden nur selten verwendet, und wenn man sie alle in die Zahlenklasse aufnimmt, wird die Klasse sehr komplex und verbraucht unnötig viele Ressourcen.
Fazit: Vermeiden Sie die Verwendung von statischen Variablen und finden Sie das richtige Leistungsgleichgewicht, wenn Sie mit statischen oder nicht statischen Methoden arbeiten.
PS: Entschuldigung für mein Englisch.