[JAVA] Lire System.out.println ("bonjour, monde")

Aperçu

[Comprendre "Hello world"] link-hello est devenu long, j'ai donc décidé d'écrire une explication de la partie de traitement spécifique ici.

[Article précédent] Je republierai le code de link-hello. Dans cet article, j'expliquerai les lignes de ce "Hello world" qui décrivent le traitement spécifique.

HelloWorld.java


public class HelloWorld {

  public static void main(String[] args) {
    System.out.println("hello, world");
  }

}

Une ligne qui décrit un traitement spécifique


System.out.println("hello, world");

De plus, ** à ma discrétion **, j'ai ajouté «chaque fois que j'ai des problèmes si je ne sais pas» pour chaque article. Plus vous avez de ★, mieux vous devez savoir.

System pointe vers la classe java.lang.System (chaque fois que vous ne savez pas: ★★ ☆)

En Java, c'est implicitement (sans rien écrire) ʻimport java.lang. * . Autrement dit, les classes appartenant au package java.lang peuvent être référencées sans écrire une déclaration ʻimport.

Par conséquent, la classe java.lang.System peut simplement être écrite comme System.

Les deux lignes suivantes ont exactement la même signification


System.out.println("Hello world");
java.lang.System.out.println("Hello world");

À quelle fréquence avez-vous des problèmes si vous ne savez pas?

Il n'est généralement pas possible d'omettre java.lang.. Cependant, si vous ne savez pas qu'il appartient au paquet java.lang, vous aurez des problèmes lors de la vérification de [JavaDoc] link-java_lang, alors sachez qu'il s'agit d'une notation abrégée.

Si vous ne le connaissez pas, définissez-le sur ** ★★ ☆ (2) **.

ʻOut est un champ staticde la classeSystem` (chaque fois que vous ne savez pas: ★ ☆☆)

Jetons un œil à [JavaDoc pour la classe System] link-system. Il est expliqué que les trois champs «statiques» suivants sont définis.

Nom de domaine La description
err Flux de sortie d'erreur "standard".
in Flux d'entrée "Standard".
out Le flux de sortie "standard".

Comme mentionné ci-dessus, System.out pointe vers le champ static de la classe System. Un flux de sortie "standard" est un "flux" qui est connecté à une "sortie standard". (L'explication de "sortie standard" et "flux" est omise ici.)

En général, il vaut mieux passer par une méthode get (appelée getter) que de rendre un champ public. De plus, les champs ci-dessus ont des noms assez différents par convention Java. Peut-être qu'il a une conception si spéciale pour plus de commodité.

Maintenant, si vous regardez la description du champ ʻout, vous pouvez voir que ce champ est de la classe [PrintStream`] link-printstream.

System.Déclaration de sortie


public static final PrintStream out

Essayons d'assigner System.out à une variable de type PrintStream.

Essayez d'affecter à une variable de type PrintStream


java.io.PrintStream ps = System.out; // System.Remplacez ps
ps.println("Hello world"); //Appel de la méthode println de ps

Le résultat est, bien sûr, le même que d'écrire System.out.println (" bonjour, monde "); sur une seule ligne.

À quelle fréquence avez-vous des problèmes si vous ne savez pas?

" System.out.println "est un idiome pour imprimer les valeurs des programmes Java vers la sortie standard. Vous n'avez donc pas à vous inquiéter si vous ne savez pas exactement ce qu'est «out». Cependant, comme c'est une partie basique, je la laisserai comme ** ★ ☆☆ (1) ** si vous ne la connaissez pas, avec le sentiment que vous voulez la connaître.

"Hello world" est une syntaxe sucrée pour créer une instance String (à chaque fois que vous ne la connaissez pas: ★★ ☆)

Jetons un œil à [JavaDoc pour la classe String] link-string. Il est expliqué comme suit.

String La classe représente une chaîne. Toutes les chaînes littérales telles que "abc" dans les programmes Java s'exécutent en tant qu'instances de cette classe.

La classe String peut être considérée comme la classe la plus favorisée parmi de nombreuses classes Java. Dans le langage Java, [^ literal_o], la seule classe qui peut être écrite littéralement est la classe String. Seuls les types primitifs (tels que «int» et «booléen») et «null» peuvent être représentés littéralement à l'exception des chaînes («String»).

Au fait, je pense qu'il y a beaucoup de gens qui ont demandé "Qu'est-ce qu'un littéral?" En termes simples, un littéral est une «valeur écrite directement dans le code source».

Même si le terme littéral n'est pas tout à fait correct, le code ci-dessous [^ string_new] peut vous donner un aperçu de son importance.

Exemple de création d'une instance String qui n'utilise pas de littéraux de chaîne


char data[] = {'a', 'b', 'c'};
String str = new String(data);

//Ce qui précède est le même que le code ci-dessous
String str = "abc";

Si vous n'avez pas de littéral de chaîne, vous devez "écrire un appel au constructeur avec un tableau char comme argument" pour "obtenir une instance de" String "de n'importe quelle valeur". La chaîne est beaucoup utilisée, il serait donc trop difficile de l'écrire comme celle-ci un par un.

La "syntaxe enrobée de sucre" est un mécanisme grammatical pour simplifier la description d'un tel "code gênant". En d'autres termes, "Créer une instance String" a une syntaxe sucrée appelée littéral de chaîne.

À quelle fréquence avez-vous des problèmes si vous ne savez pas?

Si vous avez besoin d'une instance String d'une valeur quelconque, générez-la avec une chaîne littérale. Au contraire, ne créez pas d'instance en appelant un constructeur lorsque vous n'en avez pas besoin. (Par exemple, lors de la génération d'une chaîne de caractères à partir d'un tableau byte, le constructeur de String peut être utilisé.)

Cependant, vous devez savoir que même si vous l'écrivez dans une chaîne littérale, vous êtes en fait new String (...) (c'est-à-dire que vous créez une instance String). Faisons le.

Il est important de savoir où et comment l'instance est créée, pas seulement String, donc si vous ne la connaissez pas, définissez-la comme ** ★★ ☆ (2) **.

à la fin

[Comprendre "Hello world"] A la fin de link-hello, j'ai écrit un code qui reflète le contenu de ce message dans HelloWorld.java, donc s'il vous plaît voir cela aussi.

[^ literal_o]: dans des langages autres que Java, il n'est pas rare de pouvoir représenter des classes autres que des chaînes comme des littéraux (tels que des littéraux d'expression régulière et des littéraux de date). [^ string_new]: Ce code est extrait de [JavaDoc pour la classe String] link-string.

Recommended Posts

Lire System.out.println ("bonjour, monde")
Lire "Hello world"
Les débutants en Java lisent Hello World
Java, bonjour le monde!
Java Hello World
"Hello World" en Java
Apprendre Java (1) - Hello World
Écrivons Hello World
Hello World en Java
Étudier Java-Partie 1-Hello World
Hello World avec Web Assembly
Hello World avec Micronaut
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Bonjour tout le monde avec VS Code!
java bonjour le monde, compilez, exécutez
Hello World avec Spring Boot
Hello World avec SpringBoot / Gradle
Bonjour tout le monde! Avec Asakusa Framework!
Spring Boot Hello World dans Eclipse
Hello World pour le plugin Java ImageJ
Jusqu'à "Hello World" avec Spring Boot
Hello World avec AWS Lambda + Java
Bonjour tout le monde avec Kotlin et JavaFX
Hello World avec Docker et langage C
Bonjour le monde de Java dans Eclipse maintenant
(Intellij) Hello World avec Spring Boot
Hello World avec GlassFish 5.1 + Servlet + JSP
Créez un PDF avec itext7 ~ HelloWorld ~
bonjour, monde dans Vanilla Java-EHW2018 "MVP"
"Hello world" pour ImageJ avec Eclipse
Hello World avec GWT 2.8.2 et Maven
Version du système d'exploitation Android (7.1.2) et Hello World
Bonjour tout le monde en Java et Gradle
Création d'une série de plugins Elasticsearch (1) Hello World
Hello World avec Eclipse + Spring Boot + Maven
Bonjour tout le monde!
Bonjour tout le monde avec le moteur de modèle Java Thymeleaf
[Entraine toi! ] Affichez Hello World avec Spring Boot
Développement Java avec Codenvy: Hello World! Run
"Hello, World!" Avec Kotlin + CLI en 5 minutes
Hello World sur Mac VSCode Java
Introduction à Ratpack (3) - Explication détaillée de Hello World
Bonjour tout le monde avec Kotlin et Tornado FX
Comment Spring Security fonctionne avec Hello World
(IntelliJ + gradle) Hello World avec Spring Boot
Construction d'un environnement Java minimal et Hello World