Objektorientiert (2)
dies: stellt das Objekt dar. Welches Objekt stellt es dar? aktuelles Objekt.
Wenn Mitgliedsvariablen und lokale Variablen denselben Namen haben, können Sie das Schlüsselwort this verwenden, um sie zu unterscheiden.
Dies ist ein Verweis auf das Objekt, zu dem die Funktion gehört. (Einfach ausgedrückt: Welches Objekt ruft die Funktion auf, in der sich dieses befindet, dies stellt dieses Objekt dar.)
Dies kann auch verwendet werden, um andere Konstruktoren im Konstruktor aufzurufen. Hinweis: Es kann nur in der ersten Zeile des Konstruktors definiert werden. Weil zuerst die Initialisierungsaktion durchgeführt werden muss.
Zum Beispiel: person(String name){this.name = name;}
person(String name,int age){this(name);this.age = age;}
Im Allgemeinen werden Objekte dieser Klasse in Objekten dieser Klasse verwendet, und dies wird normalerweise verwendet.
static:
Funktionen: 1.static ist ein Modifikator, der zum Ändern von Mitgliedern verwendet wird.
2. Durch statische Elemente geänderte Mitglieder werden von allen Objekten gemeinsam genutzt.
3. Static existiert vor Objekten, da statische Member bereits vorhanden sind, wenn die Klasse geladen wird.
4. Durch statische Änderungen geänderte Mitglieder verfügen über eine zusätzliche Aufrufmethode, dh sie können direkt über den Klassennamen aufgerufen werden, z. B.: Klassenname.Mitgliedsvariable.
5. Die durch statische Daten geänderten Daten sind gemeinsam genutzte Daten, und die im Objekt gespeicherten zeitspezifischen Daten sind es.
Hinweis: Mitgliedsvariablen werden auch als Instanzvariablen bezeichnet. Durch statische Variablen geänderte Variablen werden als statische Variablen oder Klassenvariablen bezeichnet.
Der Unterschied zwischen Mitgliedsvariablen und statischen Variablen:
1. Die Lebenszyklen der beiden Variablen sind unterschiedlich.
Mitgliedsvariablen existieren beim Erstellen des Objekts und werden recycelt und freigegeben, wenn das Objekt recycelt wird.
Statische Variablen existieren beim Laden der Klasse und verschwinden mit dem Verschwinden des Objekts Klasse.
2. Die Aufrufmethoden sind unterschiedlich.
Mitgliedsvariablen können nur von Objekten aufgerufen werden.
Statische Variablen können von Objekten und Klassennamen aufgerufen werden (empfohlen).
3. Die Aliase sind unterschiedlich.
Mitgliedsvariablen werden Instanzvariablen genannt;
statische Variablen werden Klassenvariablen genannt.
4. Die Datenspeicherorte sind unterschiedlich.
Mitgliedsvariablendaten werden im Objekt im Heapspeicher gespeichert und werden daher auch als objektspezifische Daten bezeichnet.
Statische Variablendaten werden im statischen Bereich des Methodenbereichs (gemeinsam genutzter Datenbereich) gespeichert und werden daher auch als gemeinsam genutzte Daten des Objekts bezeichnet.
Hinweise zur statischen Verwendung:
1. Statische Methoden können nur auf statische Mitglieder zugreifen. (Nicht statisch kann sowohl auf statisch als auch nicht statisch zugreifen.) (Hinweis: Beachten Sie, dass statische Methoden im Kontext derselben Klasse nur statische Mitglieder dieser Klasse aufrufen können.)
2. Statische Methoden Die this or Super-Schlüsselwörter können in nicht verwendet werden.
3. Die Hauptfunktion ist statisch.
Wann wird statische Aufladung verwendet?
1. Statische Variablen.
Wenn alle Mitgliedsvariablen im Analyseobjekt gleich sind, kann diese Mitgliedsvariable statisch geändert werden.
Solange die Daten im Objekt unterschiedlich sind, müssen die eindeutigen Daten des Objekts im Objekt gespeichert werden und sind nicht statisch.
Wenn es sich um dieselben Daten handelt, muss das Objekt nicht geändert, sondern nur verwendet werden. Es muss nicht im Objekt gespeichert werden und ist als statisch definiert.
2. Statische Funktion.
Unabhängig davon, ob die Funktion statisch geändert wird, ist der einzige Bezugspunkt, ob die Funktion Zugriff auf eindeutige Daten im Objekt hat.
Um es einfach auszudrücken: Sehen Sie sich den Quellcode an und prüfen Sie, ob die Funktion auf nicht statische Mitgliedsvariablen zugreifen muss. Wenn nicht, kann die Funktion als statisch definiert werden.
Natürlich kann diese Funktion auch als nicht statisch definiert werden, aber nicht statisch muss von einem Objekt aufgerufen werden, und es ist sinnlos, ein Objekt nur zum Aufrufen nicht statischer Methoden zu erstellen, ohne auf eindeutige Methoden zuzugreifen Daten.
Besonderheiten der Hauptfunktion:
1. Das Format ist festgelegt 2. Es wird von jvm erkannt und aufgerufen.
Öffentlich: Weil die Berechtigungen am größten sein müssen.
statisch: Wenn Sie kein Objekt benötigen, rufen Sie es einfach direkt mit dem Klassennamen der Hauptfunktion auf.
void: Die Hauptfunktion hat keinen spezifischen Rückgabewert.
main: Funktionsname, kein Schlüsselwort, nur ein fester Name, der von JVM erkannt wird.
String[] args: Dies ist die Parameterliste der Hauptfunktion. Es handelt sich um einen Array-Typ-Parameter und die Elemente sind alle String-Typen. (Kann beim Aufruf der Hauptfunktion übergeben werden, zum Beispiel: java mainDemo xx yy zz ist ein String-Array mit 3 übergebenen Elementen)
Statischer Codeblock, Konstruktionscodeblock, lokaler Codeblock:
Statischer Codeblock: Wird beim Laden der Klasse ausgeführt. Und nur einmal ausgeführt. Funktion: Wird zum Initialisieren der Klasse verwendet.
Konstruktionscodeblock: Wird beim Erstellen des Objekts ausgeführt und beim Erstellen des Objekts mehrmals aufgerufen. Funktion: Kann für alle Objekte initialisiert werden. (Der Unterschied zum Konstruktor: Der Konstruktor führt eine gezielte Initialisierung des entsprechenden Objekts durch. Die Objektinitialisierung des Konstruktionscodeblocks ist universell.)
Die Rolle lokaler Codeblöcke: Begrenzen Sie den Lebenszyklus lokaler Variablen.
Die Aufrufreihenfolge der drei ist wie folgt:
class StaticCode { static int num ; //静态代码块 (首先执行) static { num = 10; // num *=3; System.out.println("hahahah"); } StaticCode(){} static void show() { System.out.println(num); } } class Person { private String name; {//构造代码块。可以给所有对象进行初始化的。(如有调用对象,即其次调用,与局部代码块视情况而定) System.out.println("constructor code "); // cry(); } static { System.out.println("static code"); } Person()//是给对应的对象进行针对性的初始化。 { name = "baby"; // cry(); } Person(String name) { this.name = name; // cry(); } public void cry() { System.out.println("哇哇"); } public void speak() { System.out.println("name:"+name); } static void show() { System.out.println("show run"); } } class StaticCodeDemo { static { // System.out.println("a"); //先执行 } public static void main(String[] args) { // Person p = null; // p.speak(); // Person.show(); // Person p1 = new Person(); // p1.speak(); // Person p2 = new Person("旺财"); // p2.speak(); // new Person(); // new StaticCode().show(); // new StaticCode().show(); // StaticCode.show(); // System.out.println("b"); //后执行 } }
Das Obige ist der grundlegende Einführungsaufsatz zur JavaSE-Version (8) – statischer Inhalt. Bitte zahlen Sie Achtung auf die chinesische PHP-Website (www.php.cn)!