Java-Programmierung (statische Klausel und "Klassenvariablen")

statische Klausel und Klasse

Informationen zum Wort static, das vor dem Methodennamen der Hauptmethode steht. Sie können es lesen, wenn Sie die Standardausgabe verstehen, wie man Klassen schreibt und wie man sie aufruft.

Klassenvariable

Normalerweise werden Klassen instanziiert und verwendet. Versuchen wir die folgende Methode.

public class Calculate {
 private int s = 3;
 public int multipleIntegerNumber(int num){
  s = num + s;
  s = num + s;
  return s;  
 }
}

Nennen wir dies in der Hauptmethode.

public class Mainmethod{
  public static void main(String[] args){
    
  int result; 
   
   Calculate calculate = new Calculate(); 
   result = calculate.multipleIntegerNumber(3);
  }
}

Dann ist das variable Ergebnis 9. Lassen Sie es uns wie folgt ändern.

public class Calculate {
private static int s = 3;
	private int ns = 3;
	int[] r = new int[2];

	public int[] multipleIntegerNumber1(int num){
	 s = 2*num + s; // -----> A
	 ns = 2*num + ns; 

	 r[0] = s;
	 r[1] = ns;
	 return r;

	}
}

Rufen wir diese Klasse mit der folgenden Hauptmethode auf.

public class Mainmethod{
  public static void main(String[] args){
    
   int[] result1;
   int[] result2;

   ClassValue calculate1 = new ClassValue();
   ClassValue calculate2 = new ClassValue();

   result1 = calculate1.multipleIntegerNumber1(3);// -------> ➀
   result2 = calculate2.multipleIntegerNumber1(3);// -------> ➁

  }
}

Was ist nun mit Ergebnis1 und Ergebnis2? Abschließend sprechen qiita 1(クラス変数1).PNG Es wird sein. Der Wert von resul2 [0] ändert sich. Das liegt daran, dass ich es statisch genannt habe. Wenn keine statische Aufladung vorliegt, wird der Wert der Variablen für jede Instanz zurückgesetzt. Jedoch. Der Wert der Variablen wird auch dann vererbt, wenn sich die Instanz ändert, an die die Statik angehängt ist. In diesem Beispiel war die Variable ns zum Zeitpunkt der Deklaration nicht als statisch markiert, sodass die Werte in den Instanzen berechne1 und berechne2 zurückgesetzt wurden. Da die Variable s zum Zeitpunkt der Deklaration als statisch angehängt ist, wurde der Wert in den Instanzen berechne1 und berechne2 vererbt. Zum Zeitpunkt von ➀ wird $ 2 {\ times} num (= 6) $ zu $ s (= 3) $ addiert, um $ 9 $ zu erhalten. Wenn ➁, wird $ 2 {\ times} num (= 6) $ zu $ s (= 9) $ addiert, um $ 15 $ zu erhalten. Es wird übrigens als Instanzvariable oder Klassenvariable bezeichnet, je nachdem, ob eine statische Klausel hinzugefügt wird oder nicht.

Instanzvariable Klassenvariable
Die statische Klausel zum Zeitpunkt der Deklaration Nicht anhängen Anziehen
Wert der Variablen Für jede Instanz unterschiedlich Von allen Instanzen geteilt

Zwei Methoden für Klassenvariablen

Abschließend werde ich ein Beispiel für die Verwendung einer anderen Klassenvariablen geben. Die folgende ClassValue2-Klasse definiert zwei Instanzen, die static_count und die Klassenvariable instans_count. Jedes Mal, wenn die vier in der Klasse definierten Methoden aufgerufen werden, wird 1 zu den beiden Variablen hinzugefügt. Dann wird der Wert durch die Bestätigungsmethode angegeben.

public class ClassValue2 {
	private int s = 3;
	private static int static_count = 0;
	private int instans_count = 0;

	public void add(int num){
		s = num + s;
		static_count = static_count + 1;
		instans_count = instans_count + 1;
	}

	public void substract(int num){
		s = -num + s;
		static_count = static_count + 1;
		instans_count = instans_count + 1;
	}

	public void multiple(int num){
		s = num*s;
		static_count = static_count + 1;
		instans_count = instans_count + 1;
	}
	public void division(int num){
		s = 1/num*s;
		static_count = static_count + 1;
		instans_count = instans_count + 1;
	}

	public void confirmation(){
		System.out.println("static_count:" + static_count);
		System.out.println("instans_count:" + instans_count);
		System.out.println("s:" + s);
	}

}

Nennen wir es so: Wir rufen aus 3 Instanzen an.

ClassValue2 classValue2_1 = new ClassValue2();
classValue2_1.add(3);
ClassValue2 classValue2_2 = new ClassValue2();
classValue2_2.substract(1);
ClassValue2 classValue2_3 = new ClassValue2();
classValue2_3.division(2);
classValue2_1.confirmation();
classValue2_2.confirmation();
classValue2_3.confirmation();

Das Ergebnis ist wie folgt: qiita 1(クラス変数2).PNG Auf diese Weise. Die Variable instans_count kann die Anzahl der Anrufe von dieser Instanz zählen, und die Variable static_count kann die Gesamtzahl der Anrufe von allen Instanzen zählen.

Recommended Posts

Java-Programmierung (statische Klausel und "Klassenvariablen")
Java-Programmierung (Variablen und Daten)
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Java-Programmierung (Klassenmethode)
Java-Programmierung (Klassenstruktur)
[Java] Variablen- und Typtypen
[Java] Stapelbereich und statischer Bereich
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
Definition und Instanziierung von Java-Klassen
Java-Klasse Variable Klassenmethode
[Vollständige Programmierung] §4 Variablen und Konstanten
[Java Silver] Was sind Klassenvariablen, Instanzvariablen und lokale Variablen?
Informationen zu statischen und nicht statischen Java-Methoden
Warum werden Klassenvariablen benötigt? [Java]
Java Primer Series (Variationen und Typen)
StringBuffer- und StringBuilder-Klasse in Java
Java statisch
[Java] Stapelbereich und statischer Bereich
Informationen zu statischen und nicht statischen Java-Methoden
Verarbeitungsgeschwindigkeit mit und ohne statische Aufladung
statisch
[Docker von 0 herausfordern] Übersicht und Bedingungen von Docker
Java-Programmierung (statische Klausel und "Klassenvariablen")
Java für Anfänger, Variablen und Typen
Java-Programmierung (Klassen und Instanzen, Hauptmethoden)
[Java] Ausgabe, Variablen
Java-Klassenmethoden
Konzept der Instanz ・ Klassentypvariable ・ Konstruktor ・ Statisches Element
Klasse und Modell
[Java] Klassenvererbung
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Statische Java-Geschichte
Java-Scanner-Klasse
Grundlagen der Java-Programmierung
Java (abstrakte Klasse)
[Swift vs Java] Lassen Sie uns statisch und endgültig verstehen
[Verarbeitung × Java] Datentyp und objektorientierte Programmierung
[WIP] Java-Variablen
[Java] Verschachtelte Klasse
Anonyme Java-Klasse
Überprüfen Sie das statische und öffentliche Verhalten in Java-Methoden
Java Generische Programmierung
Über die Java-Klasse
Java und JavaScript
XXE und Java
Java- und Swift-Vergleich (3) Klassenimplementierung / Klassenvererbung / Klassendesign
[Java] Abstrakte Klasse
[Java] Objektklasse
Lokale Java-Klasse
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Schreiben Sie eine Klasse in Kotlin und nennen Sie sie in Java
[Java] Verweisen Sie auf und setzen Sie private Variablen mit Reflektion
Verwendung von Abstract Class und Interface in Java richtig
[Einführung in Java] Variablenbereich (Bereich, lokale Variable, Instanzvariable, statische Variable)
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
Einschränkungsprogrammierung in Java
Über die Klassenteilung (Java)
Getter und Setter (Java)
[Java] Thread und ausführbar
Java wahr und falsch
[Java] Vergleich von Zeichenketten und && und ||
abstrakt (abstrakte Klasse) und Schnittstelle (Schnittstelle)
Überprüfung der Java-Innenklasse
Java-Programmiergrundlagen Übungsarray