[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");
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) **.
est un champ
staticde la classe
System` (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.
" 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.
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.
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) **.
[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