Programmation Java (clause statique et "variables de classe")

clause statique et classe

À propos du mot statique qui précède le nom de la méthode principale. Si vous comprenez la sortie standard, comment écrire une classe et comment l'appeler, vous pouvez la lire.

Variable de classe

Habituellement, les classes sont instanciées et utilisées. Essayons la méthode suivante.

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

Appelons cela dans la méthode principale.

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

Ensuite, le résultat variable est 9. Changeons cela comme suit.

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;

	}
}

Appelons cette classe à partir de la méthode principale suivante.

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);// -------> ➁

  }
}

Maintenant qu'en est-il du résultat1 et du résultat2? Parlant de la conclusion qiita 1(クラス変数1).PNG Ce sera. La valeur de resul2 [0] change. C'est parce que je l'ai nommé statique. Lorsqu'il n'y a pas de statique, la valeur de la variable est réinitialisée pour chaque instance. Pourtant. La valeur de la variable est héritée même si l'instance à laquelle la statique est attachée change. Dans le cas de cet exemple, la variable ns n'était pas marquée comme statique au moment de la déclaration, les valeurs ont donc été réinitialisées dans les instances Calculate1 et Calculate2. Cependant, comme la variable s est attachée en tant que statique au moment de la déclaration, la valeur a été héritée dans les instances Calculate1 et Calculate2. Au moment de ➀, $ 2 {\ times} num (= 6) $ est ajouté à $ s (= 3) $ pour faire 9 $. De plus, quand ➁, $ 2 {\ times} num (= 6) $ est ajouté à $ s (= 9) $ pour faire 15 $. En passant, on l'appelle une variable d'instance ou une variable de classe selon que l'on ajoute ou non une clause statique.

Variable d'instance Variable de classe
La clause statique au moment de la déclaration N'attachez pas Mettez
Valeur de la variable Différent pour chaque instance Partagé par toutes les instances

Deux méthodes de variables de classe

Enfin, je vais donner un exemple de la façon d'utiliser une autre variable de classe. La classe ClassValue2 suivante définit deux instances, le static_count et la variable de classe instans_count. Et chaque fois que les quatre méthodes définies dans la classe sont appelées, une est ajoutée aux deux variables. Ensuite, la valeur est donnée par la méthode de confirmation.

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);
	}

}

Appelons ça comme ça: Nous appelons depuis 3 instances.

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();

Le résultat est le suivant: qiita 1(クラス変数2).PNG De cette façon. La variable instans_count peut compter le nombre d'appels de cette instance, et la variable static_count peut compter le nombre total d'appels de toutes les instances.

Recommended Posts

Programmation Java (clause statique et "variables de classe")
Programmation Java (variables et données)
[Java] Différences entre les variables d'instance et les variables de classe
Programmation Java (méthode de classe)
Programmation Java (structure de classe)
[Java] Types de variables et types
[Java] Zone de pile et zone statique
[Java] Différence entre statique final et final dans les variables membres
Définition et instanciation de classe Java
Méthode de classe variable de classe Java
[Programmation complète] §4 Variables et constantes
[Java Silver] Que sont les variables de classe, les variables d'instance et les variables locales?
À propos des méthodes Java statiques et non statiques
Pourquoi les variables de classe sont-elles nécessaires? [Java]
Série Java Primer (variations et types)
Classe StringBuffer et StringBuilder en Java
Java statique
[Java] Zone de pile et zone statique
À propos des méthodes Java statiques et non statiques
Vitesse de traitement avec et sans statique
statique
[Challenge Docker from 0] Présentation et conditions de Docker
Programmation Java (clause statique et "variables de classe")
Java pour les débutants, les variables et les types
Programmation Java (classes et instances, méthodes principales)
[Java] sortie, variables
Méthodes de classe Java
Concept d'instance ・ Variable de type de classe ・ Constructeur ・ Membre statique
Classe et modèle
[Java] Héritage de classe
[Java] Comment utiliser la classe FileReader et la classe BufferedReader
Histoire statique Java
classe Scanner java
bases de la programmation Java
java (classe abstraite)
[Swift vs Java] Comprenons le statique et le final
[Traitement × Java] Type de données et programmation orientée objet
[WIP] Variables Java
[Java] Classe imbriquée
Classe anonyme Java
Vérifier le comportement statique et public dans les méthodes Java
Programmation générique java
À propos de la classe Java
Java et JavaScript
XXE et Java
Comparaison Java et Swift (3) Implémentation de classe / héritage de classe / conception de classe
[java] Classe abstraite
[Java] Classe d'objets
Classe locale Java
[Java] Comment utiliser la classe Calendar et la classe Date
Ecrire une classe en Kotlin et l'appeler en Java
[Java] Se référer et définir des variables privées avec réflexion
Utilisation correcte de la classe abstraite et de l'interface en Java
[Introduction à Java] Portée de la variable (portée, variable locale, variable d'instance, variable statique)
[Java] Gestion des chaînes de caractères (classe String et classe StringBuilder)
Programmation par contraintes en Java
À propos de la division de classe (Java)
Getter et Setter (Java)
[Java] Thread et exécutable
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
abstract (classe abstraite) et interface (interface)
Examen de la classe interne Java
Bases de la programmation Java Practice-array