Heim Java JavaBase Der Unterschied zwischen statischen Java-Methoden und nicht statischen Methoden

Der Unterschied zwischen statischen Java-Methoden und nicht statischen Methoden

Nov 12, 2019 am 10:24 AM
java 区别 静态方法

Der Unterschied zwischen statischen Java-Methoden und nicht statischen Methoden

Der Unterschied zwischen statischen Java-Methoden und nicht statischen Methoden

1 Methode)

Sie gehören wie statische Mitgliedsvariablen zur Klasse selbst. Sie werden in den Speicher geladen, wenn die Klasse geladen wird, und werden nicht automatisch zerstört. Sie bleiben im Speicher, bis die JVM geladen wird geschlossen;

2. Nicht-statische Methode

Wird auch als Instanziierungsmethode bezeichnet und muss nach der Instanziierung zugewiesen werden Instanz der Klasse. Wenn das Instanzobjekt von der JVM recycelt wird, verschwindet es auch

Der Unterschied zwischen statischen Methoden und Instanzmethoden

1. Leben Zyklus

Der Lebenszyklus einer statischen Methode beginnt, wenn der Prozess erstellt wird, und endet, wenn der Prozess endet. Daher ist die statische Methode global und durchläuft den gesamten Prozess Der Lebenszyklus der Instanzmethode beginnt mit der Instanziierung des Objekts und dauert bis zum Ende des Prozesses. Das instanziierte Objekt endet nach der Aufhebung der Registrierung und dem Recycling

Der Lebenszyklus der Instanzmethode ist also kürzer als der Lebenszyklus der statischen Methode Dies ist auch der Grund, warum statische Methoden nicht in Instanzmethoden aufgerufen werden können

2 .Aufrufende Methode

Beim externen Aufruf einer statischen Methode Sie können die Methode „Klassenname. Methodenname“ oder die Methode „Objekt. Methodenname“ verwenden, was bedeutet, dass beim Aufruf einer statischen Methode kein Objekt erstellt werden muss

Instanzmethoden können nur die verwenden „object.method name method“

//-----------hasStaticMethod.java-----------------
public class hasStaticMethod{
//定义一个静态方法
public static void callMe(){
  System.out.println("This is a static method.");
}
}
Nach dem Login kopieren

Das folgende Programm verwendet zwei Formen, um statische Methoden aufzurufen.

//-----------invokeStaticMethod.java-----------------
public class invokeStaticMethod{
  public static void main(String args[]){
  hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 
  hasStaticMethod oa = new hasStaticMethod();  //创建一个对象
  oa.callMe();   //利用对象来调用静态方法
}
}
Nach dem Login kopieren

3. Zugriffsbeschränkungen

Wenn statische Methoden auf Mitglieder dieser Klasse zugreifen, dürfen sie nur auf statische Mitglieder (d. h. statische Variablen und statische Methoden) zugreifen und nicht Greifen Sie auf Instanzmitgliedsvariablen und Instanzmethoden zu. Für Instanzmethoden gilt diese Einschränkung nicht.

Instanzmitgliedsvariablen gehören zu einem Objekt, und das Objekt existiert nicht unbedingt, wenn die statische Methode zulässig ist Die Methode greift auf die Instanzmitgliedsmethode zu und kann daher indirekt auf die Instanzmitgliedsvariable zugreifen. Aus demselben Grund kann das Schlüsselwort this

//-----------accessMember.java-----------------
class accessMember{
private static int sa; //定义一个静态成员变量
private int ia; //定义一个实例成员变量
//下面定义一个静态方法
static void statMethod(){
  int i = 0;  //正确,可以有自己的局部变量sa = 10;  
  //正确,静态方法可以使用静态变量
  otherStat(); 
  //正确,可以调用静态方法
  ia = 20;  //错误,不能使用实例变量
  insMethod(); //错误,不能调用实例方法
}
static void otherStat(){} 
//下面定义一个实例方法 
void insMethod(){
  int i = 0;  //正确,可以有自己的局部变量
  sa = 15;  //正确,可以使用静态变量
  ia = 30;  //正确,可以使用实例变量
  statMethod();  //正确,可以调用静态方法
}
}
Nach dem Login kopieren

nicht verwendet werden statische Methode 4. Ausführungssequenz

Wenn eine Klassendatei von ClassLoader in die JVM geladen wird, werden die Methodenanweisungen im Stapel gespeichert. Zu diesem Zeitpunkt befinden sich keine Daten im Heap-Bereich. Wenn es sich um eine statische Methode handelt, kann der Befehlscode zu diesem Zeitpunkt natürlich nicht auf den Heapshuju-Datenbereich zugreifen Die Instanzmethode verfügt über einen impliziten eingehenden Parameter, den Parameter. Dieser Parameter ist die Speicheradresse des Instanzobjekts im Stapel, sodass die Instanzmethode ihre eigenen Daten im Heap finden kann vor dem Aufruf instanziiert werden, Daten im Heap zuweisen und den Speicherzeiger im Stapel über die impliziten Parameter der JVM an die Instanzmethode übergeben. Wenn Sie es direkt aufrufen, ohne es zu instanziieren, wird ein Fehler gemeldet, da der implizite Parameter keinen Wert hat.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen statischen Java-Methoden und nicht statischen Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Unterschied zwischen char und wchar_t in der C -Sprache Der Unterschied zwischen char und wchar_t in der C -Sprache Apr 03, 2025 pm 03:09 PM

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Der Unterschied zwischen Multithreading und asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Was ist der Unterschied zwischen Char und Unsigned char Was ist der Unterschied zwischen Char und Unsigned char Apr 03, 2025 pm 03:36 PM

Char und Unsigned char sind zwei Datentypen, die Charakterdaten speichern. Der Hauptunterschied ist der Weg, um mit negativen und positiven Zahlen umzugehen: Wertebereich: char signiert (-128 bis 127) und nicht signiertes char nicht signiert (0 bis 255). Negative Zahlenverarbeitung: char kann negative Zahlen speichern, unsigned char kann nicht. Bitmodus: char Das höchste Bit repräsentiert das Symbol, nicht signiertes char unsigned Bit. Arithmetische Operationen: SHOR und unsigned char sind signierte und nicht signierte Typen, und ihre arithmetischen Operationen sind unterschiedlich. Kompatibilität: SHAR und nicht signiertes Zeichen

Was sind die Unterschiede und Verbindungen zwischen C und C#? Was sind die Unterschiede und Verbindungen zwischen C und C#? Apr 03, 2025 pm 10:36 PM

Obwohl C und C# Ähnlichkeiten haben, sind sie völlig unterschiedlich: C ist eine prozessorientierte, manuelle Speicherverwaltung und plattformabhängige Sprache, die für die Systemprogrammierung verwendet wird. C# ist eine objektorientierte, Müllsammlung und plattformunabhängige Sprache, die für Desktop-, Webanwendungs- und Spielentwicklung verwendet wird.

Der Unterschied zwischen H5- und Miniprogramm und Apps Der Unterschied zwischen H5- und Miniprogramm und Apps Apr 06, 2025 am 10:42 AM

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Apr 04, 2025 pm 11:15 PM

Detaillierte Erläuterung der XPath -Suchmethode unter DOM -Knoten in JavaScript, wir müssen häufig bestimmte Knoten aus dem DOM -Baum basierend auf XPath -Ausdrücken finden. Wenn Sie ...

Warum müssen Sie Vue.use (Vuerouter) in der Datei idex.js unter dem Router -Ordner anrufen? Warum müssen Sie Vue.use (Vuerouter) in der Datei idex.js unter dem Router -Ordner anrufen? Apr 05, 2025 pm 01:03 PM

Die Notwendigkeit der Registrierung von Vuerouter in der Datei index.js -Datei im Ordner Router Bei der Entwicklung von VUE -Anwendungen stoßen Sie häufig Probleme mit der Routing -Konfiguration. Besonders...

See all articles