← (précédent) Architecture minimale d'un programme Java
A.2 Les variables (1) :
types primitifs - constantes
Accueil S O M M A I R E contact pour java : webmaster@debutantprog.com

A.1 La fonction System.out.print()

En java, comme en tout langage de programmation, il est nécessaire, voire indispensable, d' afficher de temps en temps une ou plusieurs informations à l' écran (ordinateur, portable, caluclatrice, etc...). Ceci a au moins une importance. Informer l' utilisateur du programme à quelle étape se trouve le programme.

En java, on utilise pour cela la fonction System.out.print(). Remarquez la seule lettre majuscule, le S. Le nom d'une classe commence toujours par une lettre majuscule, vous avais-je dit. Et c'est le cas ici. La véritable fonction est print( ). Et elle appartient à la classe System.

La fonction System.out.print() est une fonction pré-définie par le langage java. Vous ne l' inventez pas.
EXEMPLE 1 :  


1.     public class Afficher1
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("bonjour");
7.          }
8.
9.     }
Enregistrez sous Afficher1.java

Compilez puis exécutez. Il sera affiché à l' écran :

bonjour.

La fonction System.out.print() affiche toujours ce qui se trouve entre ses parenthèses.
Dans l' exemple 1, on trouve dans les parenthèses de cette fonction, une chaine de caractères. Un caractère, c' est tout ce que vous tapez sur votre clavier et qui apparaît à l' écran de votre ordinateur : lettre, chiffre, signe de ponctuation,etc...
Attention, les touches alt, ctrl ou maj ne font pas apparaître un caractère à l' écran. En revanche, la barre d' espace fait apparaître un caractère à l' écran. C' est le caractère espace. Donc l' espace est aussi un caractère. On le voit surtout quand il sépare 2 mots.

Une chaine de caractères est un ensemble de caractères qui se suivent. Pour que Java considère cette suite comme une chaine de caractères à part entière, il faut l' entourer de doubles guillemets. Exemple : "bonjour". S' il n' y a pas de doubles guillemets, java considère que c' est une variable et non une chaine de caractères. Pensez-y !

La fonction System.out.print() n' affiche pas que les chaines de caractères. Il affiche aussi des nombres, entiers ou décimaux. Et bien d' autres chose encore.
La ligne 6 est une instruction. En java, toute instruction se termine par un point virgule.
EXEMPLE 2 :  


1.     public class Afficher2
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print(25);
7.          }
8.
9.     }
compilez pui exécutez. Il sera affiché à l' écran, le nombre 25.

Pourquoi n' y a-t-il pas de doubles guillemets qui entourent le nombre 25 ? Parce que justement c' est un nombre et pas une chaine de caractères.

Quelle différence dans l' affichage me diriez-vous ? Aucune. Par contre, java fera une grande différence entre les deux lorsqu' il s' agira d' effectuer des opérations mathématiques. L' exemple suivant.
EXEMPLE 3 :  


1.     public class Afficher3
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print(25 + 25);
7.          }
8.
9.     }
Compilez pui exécutez. Il sera affiché à l' écran, le nombre 50.

Lorsque Java voit une opération mathématique dans les parenthèses de la fonction System.out.print(), java effectue d' abord l' opération, puis affiche le résultat. D' où 50 affiché à l' écran.
EXEMPLE 4 :  


1.     public class Afficher4
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("25" + 25);
7.          }
8.
9.     }
Compilez pui exécutez. Il sera affiché à l' écran : 2525.

Lorsque Java voit l' opération "25" + 25 dans les parenthèses de la fonction System.out.print(), java effectue d' abord l' opération, puis affiche le résultat. Mais ici, l' opération mathématique se fait entre une chaine de caractères et un nombre entier. Le résultat, c' est forcément une chaine de caractères. Car java transforme d' abord le nombre entier avant d' effectuer l' addition. Et l' addition de deux chaines de caractères donne toujours une chaine de caractères dont le contenu est l' ensemble des caractères des deux chaines. Exemple : "para" + "pluie" = "parapluie". De même, "25" + 25 donne d' abord "25" + "25" = "2525". Pigé ?

Le passage de 25 à "25" est ce qu' on appelle en java, une conversion implicite. Nous y reviendront plus loin. Le résultat de "25" + 25 est donc une chaîne de caractères. On ne peut donc pas effectuer une opération mathématique avec ce résultat.
EXEMPLE 5  


1.     public class Afficher5
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("Bonjour");
7.               System.out.print("monsieur");
8.          }
9.
10.     }
Compilez puis exécutez, il sera affiché ceci : Bonjourmonsieur.

Pourquoi ? Parce que la fonction System.out.print() affiche Bonjour. Puis place le curseur juste après la dernière lettre du mot. Donc, juste après r. (ligne 6). Puis Cette fonction affiche le mot monsieur. Et naturellement, commence juste après le r de Bonjour. D' où les deux chaines en une seule chaine.
Pour rémédier à la situation, deux solutions : mettre un caractère espace entre le r de bonjour et le double guillemet ou mettre cet espace entre le double guillemets et le m de monsieur.
EXEMPLE 6  


1.     public class Afficher6
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("Bonjour ");
7.               System.out.print("monsieur");
8.          }
9.
10.     }
EXEMPLE 7  


1.     public class Afficher7
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("Bonjour");
7.               System.out.print(" monsieur");
8.          }
9.
10.     }
Compilez puis exécutez chacun des exemple 6 et 7, il sera affiché ceci : Bonjour monsieur.

Mais on peut aussi résoudre le problème plus simplement en mettent "Bonjour monsieur" dans les parenthèses d' un seul System.out.print()
EXEMPLE 8 


1.     public class Afficher8
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("Bonjour monsieur");
7.          }
8.
9.     }
Simple !

Vous voulez afficher Bonjour et monsieur sur deux lignes différentes ? Dans ce cas, vous utiliserez une autre variante de la fonction System.out.print() . Elle s' appelle System.out.println(). ln = abréviation de line qui veut dire ligne.
La fonction System.out.println() affiche ce qui se trouve dans les parenthèse, comme son homologue. Mais en plus, elle place le curseur, non pas derrière le dernier caractère, mais sur la ligne suivante. De sorte que si vous avez une autre instruction d' affichage, elle se fera forcément sur la ligne suivante.
EXEMPLE 9


1.     public class Afficher9
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.println("Bonjour");
7.               System.out.print("monsieur");
8.          }
9.
10.     }
Compilez, puis exécuter, il sera affiché :
Bonjour
monsieur


On peut aussi réussir cette prouesse en utilisant la chaine de caractère \n.
EXEMPLE 10 


1.     public class Afficher10
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("Bonjour\nmonsieur");
7.          }
8.
9.     }
Compilez, puis exécuter, il sera affiché :
Bonjour
monsieur


la fonction System.out.print() se met à afficher le mot Bonjour. Puis lorsqu' elle rencontre \n, elle passe sur la ligne suivante. \n permet donc de mettre le curseur sur la ligne suivante. Dans vos devoirs, vous aurez le choix d' utiliser System.out.println() ou alors la chaine "\n".
Attention, le symbole \n n' a de sens que s' il se trouve entre guillemets. Par exemple System.out.print("bonjour" + \n) ne veut rien dire du tout. La compilation renverra forcément un message d' erreur.

Ce fameux caractère \ est très intéressant en java. Regardez plutôt l' exemple suivant et suivez les explications.
EXEMPLE 11 


1.     public class Afficher11
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("c:\\repertoire\\sous-repertoire");
7.          }
8.
9.     }
Compilez, puis exécuter, il sera affiché ceci : c:\repertoire\sous-repertoire

Lorsque java rencontre le caractère \, il regarde aussi le caractère suivant. Selon la nature de ce caractère, il donne un sens. \\ veut dire afficher \. Si le caractère suivant est n, ça veut dire, mettre le curseur sur la ligne suivante. SI c' est le caractère t, ça veut dire, tabulation.
EXEMPLE 12 


1.     public class Afficher12
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.println("1\t1\t1");
8.               System.out.println("2\t2\t2");
9.               System.out.println("3\t3\t3");
10.              System.out.println("4\t4\t4");
11.              System.out.println("5\t5\t5");
12.         }
13.
14.    }
Compilez, puis exécuter, il sera affiché ceci :

1    1    1
2    2    2
3    3    3
4    4    4
5    5    5


Explications :
Java affiche le chiffre1. Puis affiche un espace de tabulation. Puis affiche à nouveau 1. Et à nouveau la tabulation et enfin le chiffre 1.
Puis java met le curseur à la ligne suivante. Souvenez-vous du ln dans System.out.println().
Même chose pour les lignes suivantes.

Si vous estimez que l' espace de tabulation n' est pas assez grande, vous pouvez la doubler, même la tripler. Exemple de double tabulation ci-dessous
EXEMPLE 13 


1.     public class Afficher13
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.println("1\t\t1\t\t1");
8.               System.out.println("2\t\t2\t\t2");
9.               System.out.println("3\t\t3\t\t3");
10.              System.out.println("4\t\t4\t\4");
11.              System.out.println("5\t\t5\t\t5");
12.         }
13.
14.    }

Compilez, puis exécuter, il sera affiché ceci :

1        1        1
2        2        2
3        3        3
4        4        4
5        5        5


Explications :
Java affiche le chiffre1. Puis affiche 2 espaces de tabulation. Puis affiche à nouveau 1. Età nouveau la double tabulation et enfin le chiffre 1.
Puis java met le curseur à la ligne suivante. Souvenez-vous du ln dans System.out.println().
Même chose pour les lignes suivantes.

Attention ! ! ! L' espace de tabulation que vous voyez sur cet écran ne sera pas forcément le même sur l' écran de votre environnement de programmation. C' est un espace dont on peut programmer la largeur. Mais pour vous débutants, n' y pensez pas dans l' immédiat. Ce n' est pas le plus important.

Le fait d' afficher à l' aide du caractère \ se dit en java, parser. Autre exemple de parsing ci-dessous !
EXEMPLE 14 


1.     public class Afficher14
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.print("il a dit : \"mangez\".");
7.               
8.          }
9.
10.    }

Compilez, puis exécuter, il sera affiché ceci : il a dit : "mangez"

Explications :
Comme je vous l' ai dit plus haut, la fonction System.out.print() affiche ce qui se trouve entre les doubles guillemets. Mais si on veut afficher les doubles guillemets eux-même, comment faire ?... Le parsing, évidement. D' où le \". De même que \\ affiche le \, de même le \" affiche le "

Le caractère \" permet aussi d' afficher les lettres accentuées lorsque cela est nécessaire. Il peut en effet arriver que les lettres accentuées ne s' affichent pas correctement. Dans ce cas, utilisez le code unicode du caractère accentué. Ce code s' obtient en plaçant derrière les caractères \u00 , la valeur hexadécimale du caractère dans la table unicode.
Je m' explique.
Je ne vais surtout pas chercher à vous bourrer le crâne parce que je sais que vous êtes débutants en programmation, et donc en Java. Mais sachez qu' il existe une table dite unicode qui contient le code de chaque caractère. Lettre (accentuée ou pas), chiffres, point, virgule, etc... Bref, tout caractère. Même les caractères d' autres langues : arabes, chinois, russe, etc... Cela vous permet d' afficher un caractère qui ne se trouve pas sur votre clavier.
Chacun de ces caractères occupe une position, un numéro. Ce numéro, qui est évidement un nombre, possède une écriture hexadécimale. C' est cette écriture hexadécimale que vous ajoutez à la suite \u00 pour afficher le caractère concerné. Une petite complication. La position d' un caractère dépend de l' environnement. Unix, Dos, Windows, MacOS, etc... Exemple : Le caractère é est en position 233 dans la table unicode d' UNIX et Windows, alors qu' il est en position 200 dans le systeme MacOs. Sous windows : 233 en hexadécimal s' écrit e9. Donc son caractère unicode sous Unix et Windows est \u00e9 .
EXEMPLE 15 


1.     public class Afficher15
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.               System.out.println("r\u00e9colter");
7.               System.out.println("m\u00e8re");
8.               System.out.println("b\u00eate");
9.         }
10.
11.    }

Compilez, puis exécuter, il sera affiché ceci :
récolter
mère
bête


Pour en finir avec l' affichage, et en guise d' exercice, vous pouvez aller sur le moteur Google pour retrouver la table unicode des caractères sous le system d' exploitation que vous utilisez. Vous connaîtrez ainsi la position (le numéro) de chaque caractère. Ainsi, vous l' afficherez le plus simplement du monde.
Je vais vous aider un peu sans trop vous aider. Aller à cette page Caractères unicode C' est l' ensemble des codes unicodes sous windows. Mais c' est en anglais. Petit exercice. N' attendez pas qu' on vous mâche tout.

Autre chose : Regardez tous les exemples. Les accolades (ouverte et fermée) de la classe sont sur une même verticale. Les accolades (ouverte et fermée) de la fonction main() (le contenu de la classe) sont aussi sous une même verticale. Entre les deux verticales, une marge. De même, les instructions à l' intérieur de la fonction main() ont leur début sur une même verticale. Entre cette verticale et celle contenant les accolades de la fonction main(), il y a aussi une marge. Cette façon de décaler un contenant et son contenu s' appelle l' indentation. C' est une technique permettant d' aérer le code. Ça permet de distinguer un contenant de son contenu.
Cette technique est valable en java comme en tout langage de programmation.

Encore autre chose : Les numéros de ligne qui apparaissent ne font pas partie du programme. Lorsque vous tapez le code des exemples, ne mettez pas les numéros de ligne. Si vous utilisez un bon éditeur, les numéros de ligne apparaîtront automatiquement.

Une dernière chose : Pour afficher un caractère, quelqu' il soit, vous devez l' entourer de doubles guillemets. Tout ce qui n' est pas entre doubles guillemets dans les parenthèses de la fonction System.out.print() est considéré par Java comme une variable (voir le chapitre sur les variables)
EXEMPLE 16 


1.     public class Afficher16
2.     {
3.		
4.          public static void main (String [] args)
5.          {
6.              int a = 1; 
7.              String k = (a>1)? "pics" : "pic"; 
8.              System.out.println(a + " " +  k );
9.         }
10.
11.    }

Compilez, puis exécuter, il sera affiché ceci :

1 pic

Si vous modifiez ce programme en donnant la valeur 2 à la variable a, alors, après compilation et exécution, l'affichage sera :

2 pics

Explications :

ligne 7 signifie ceci : si a > 1, alors String k = "pics" Sinon, String k = "pic". En java, ça s'appelle opérateur ternaire. la partie (a>1) s'appelle condition. "pics" (au pluriel) est la valeur donnée à k si la condition est vérifiée et "pic" (au singulier) est la valeur de k si la condition n'est pas vérifiée.

ça marche aussi avec les variable de type nombre entier ou char.

String prenom = "john";
int age = (prenom == "john")? 20 : 25;
← (précédent) Architecture minimale d'un programme Java
A.2 Les variables
Accueil S O M M A I R E

A.1 La fonction System.out.print()