Méthode Java system.out.println()

Mohammad Irfan 12 octobre 2023
  1. Qu’est-ce que la méthode System.out.println() ?
  2. Comment fonctionne System.out.println() ?
  3. Rôle de toString() dans la méthode print()
  4. Sommaire
Méthode Java system.out.println()

Ce tutoriel présente le fonctionnement de la méthode System.out.println() en Java et répertorie quelques exemples de codes pour comprendre le sujet.

Le System.out.print() est une méthode très fréquemment utilisée pour imprimer sur la console ou la sortie standard. Cette méthode est parfois appelée méthode de la ligne d’impression. En plus d’imprimer sur la console, la méthode println() déplace le curseur sur une nouvelle ligne.

Dans ce tutoriel, nous allons essayer de comprendre le fonctionnement interne de cette méthode.

Qu’est-ce que la méthode System.out.println() ?

  • Le System.out.println() peut être divisé en trois parties.
  • Le System est une classe finale du package java.lang et il est automatiquement initialisé au démarrage de la JVM. Le initializeSystemClass() est utilisé pour l’initialiser.
  • La classe System contient une instance de la classe PrintStream. Cette variable d’instance est appelée out. Il est défini avec les modificateurs public, static et final.
class System {
  public static final PrintStream out;
  // More Code Below
}

La classe PrintStream contient les méthodes print() et println(). Ces méthodes sont surchargées.

class PrintStream {
  public void print(argument) {
    // implementation
  }
  public void println() {
    // implementation
  }
  // Overloaded print() and println() methods below
}

Ainsi, System.out nous donne la variable d’instance out de la classe PrintStream. On peut alors appeler la méthode print() ou println() sur cette variable d’instance.

Comment fonctionne System.out.println() ?

  • La classe PrintStream contient plusieurs méthodes print() et println() surchargées. Ils diffèrent par le type de paramètres acceptés.
  • Le type de retour de chacun d’eux est nul.
  • Une méthode surchargée existe pour tous les types primitifs.
  • Il contient également une méthode surchargée pour imprimer les chaînes et une autre pour les objets.

Le code ci-dessous montre le fonctionnement des méthodes surchargées println().

public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    short s = 10;
    long l = 10;
    char c = 'A';
    char[] charArr = {'A', 'B', 'C'};
    boolean bool = true;
    double d = 10.0;
    float f = 10.0f;
    String str = "hello";
    Object o = new Object();

    System.out.println(); // terminate the current line
    System.out.println(i); // print integer
    System.out.println(s); // print short
    System.out.println(l); // print long
    System.out.println(c); // print char
    System.out.println(charArr); // print char array
    System.out.println(bool); // print boolean
    System.out.println(d); // print double
    System.out.println(f); // print float
    System.out.println(str); // print String
    System.out.println(o); // print Object
  }
}

Production:

10 10 10 A ABC true 10.0 10.0 hello java.lang.Object @433c675d

Arguments passés à la méthode println()

  • Un débutant peut penser que les méthodes print() et println() prennent un nombre variable d’arguments (varargs), mais ce n’est pas le cas.
  • Par exemple, dans le code ci-dessous, nous essayons d’imprimer un entier, une chaîne et un caractère.
public class PrintDemo {
  public static void main(String args[]) {
    int i = 10;
    String s = "hello";
    char c = 'O';
    System.out.println(i + s + c);
  }
}

Production:

10helloO
  • Mais nous ne faisons pas passer trois arguments différents. Une virgule sépare les arguments d’une méthode.
  • Au lieu de cela, ils sont concaténés à l’aide de l’opérateur + dans la méthode println().
  • L’opérateur + utilisé avec une chaîne conduira à la concaténation de chaînes et retournera une chaîne.
  • Dans le code ci-dessus, l’entier est d’abord concaténé avec la chaîne, et la chaîne résultante est à nouveau concaténée avec la variable char.

Une autre chose à noter est que l’argument passé à la méthode est évalué de gauche à droite. Donc, si les deux premières variables passées sont des entiers, alors l’addition arithmétique normale a lieu et le résultat de l’addition est concaténé avec la chaîne.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
  }
}

Production:

20hello

Mais la concaténation des chaînes aura lieu si deux autres entiers sont présents après la chaîne.

public class PrintDemo {
  public static void main(String args[]) {
    System.out.println(10 + 10 + "hello" + 1 + 1); // 20hello11 not 20hello2
  }
}

Production:

20hello11

Nous pouvons appliquer la règle ci-dessous de gauche à droite pour calculer la sortie. Si aucune chaîne n’est présente, alors l’addition arithmétique normale a lieu.

(any data type + string) = (string + any data type) = (concatenated string)

Rôle de toString() dans la méthode print()

Les méthodes print() et println() appellent implicitement la méthode toString() sur l’argument. Il convertit l’argument en une chaîne. Ceci est très utile si nous voulons imprimer des instances de classe définies par l’utilisateur d’une manière particulière.

Nous pouvons surcharger la méthode toString() dans notre classe pour imprimer notre objet dans différents formats. L’exemple suivant le démontre.

Exemple : sans remplacer la méthode toString().

class Demo {
  String field1;
  String field2;

  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

Production:

Demo@433c675d

Exemple : après avoir remplacé la méthode toString().

class Demo {
  String field1;
  String field2;
  Demo(String f1, String f2) {
    this.field1 = f1;
    this.field2 = f2;
  }
  @Override
  public String toString() {
    return field1 + " " + field2;
  }
}
public class PrintDemo {
  public static void main(String args[]) {
    Demo d = new Demo("f1", "f2");
    System.out.print(d);
  }
}

Production:

f1 f2

Sommaire

Les méthodes print() et println() font partie de la classe PrintStream. Ils sont accessibles en utilisant la variable d’instance System.out. Ces méthodes sont surchargées pour gérer différents types d’arguments. N’oubliez pas que ces méthodes ne prennent pas un nombre variable d’arguments. Dans ce tutoriel, nous avons appris comment fonctionnent les méthodes System.out.print() et System.out.println().

Article connexe - Java Print