Bonsoir tout le monde,
Je me pose la question, quelle est la difference fondamentale entreetCode:return
puisque les 2 commandes m'affichent un résultat??Code:System.out.printIn
Merçi d'avance.
Version imprimable
Bonsoir tout le monde,
Je me pose la question, quelle est la difference fondamentale entreetCode:return
puisque les 2 commandes m'affichent un résultat??Code:System.out.printIn
Merçi d'avance.
Alors :
- printIn ça existe pas. Tu confonds avec println(). Un L minuscule.
- return n'affiche rien du tout. Il fait sortir de la méthode en cours, avec comme valeur de retour ce que tu as indiqué dans le return. Et donc je me répète, rien dans tout cela n'affiche quoi que ce soit.
merçi de ta réponse,
donc, si je disais que return capture une valeur et que a l'aide de println on peut l'afficher dans la console, ce serait vrai ou non??
"System.out.println" affiche sur la sortie standard. Si la sortie standard est la console, ceci affichera donc dans la console.
Par contre pour le "return", je ne comprends pas ta définition. C'est juste le retour d'une méthode. Si tu as une méthode qui doit te renvoyer une valeur, c'est au moment du return qu'elle renverra une valeur à la méthode mère au dessus qui l'appelle.
J'ai une derniere question, aprés je crois que je saisirai:
Si au lieu de retourner la valeur a la methode mere, je me contentais de l'afficher avec printin?(en somme dans le meme endroit du code, je remplace return par printin)
Ce serait quoi la difference??
Pardon pour mon ignorance.
La première différence c'est que tu aurais deux erreurs:
printin ca n'existe pas
et java va se plaindre que t'a déclaré que ta méthode retourne quelque chose, mais que tu ne retourne rien.
C'est pas qu'il y aie ou pas de différence, c'est que ces deux concepts n'ont strictement rien à voir et je ne sais même pas à quel moment tu as pu imaginer qu'il y aie un lien.
Ça n'a pas du tout le même but. Tout traitement fait au sein d'une méthode n'a pas pour but final d'être affiché par un println (c'est un L pas un I). Le return d'une méthode répond au mécanisme d'encapsulation qui permet ainsi de s'abstraire de la complexité d'un algo pour ne proposer qu'une méthode simple à l'utilisateur de la méthode.
En gros si tu fais ton code comme ceci :
Ton code est difficile à comprendre car tu mets tout ton algorithme directement au premier niveau. De plus, tu ne peux tester facilement ta classe.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public class Lanceur { public static void main(String[] args) { double premiereValeur = 1; double deuxiemeValeur = 3; // fonction mégacomplexe double sommeDesDeux = premiereValeur + deuxiemeValeur; double moyenneValeur = sommeDesDeux/2; System.out.println("Ma moyenne est : " + moyenneValeur); } }
Alors que tu peux voir à travers cet exemple qu'il y a une méthode simple qui se dégage de ce code qui est la méthode "moyenne". Tu pourrais ainsi écrire un code comme celui-ci :
Dans ce cas, ton code est mieux séparé et il t'est aisé de faire un test unitaire sur la fonction moyenne.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Lanceur { public static void main(String[] args) { double premiereValeur = 1; double deuxiemeValeur = 3; // fonction mégacomplexe encapsulée double moyenneValeur = moyenne(premiereValeur, deuxiemeValeur); System.out.println("Ma moyenne est : " + moyenne); } public double moyenne(double premiereValeur, double deuxiemeValeur) { double sommeDesDeux = premiereValeur + deuxiemeValeur; double moyenneValeur = sommeDesDeux/2; return moyenneValeur; } }
Après comme je l'ai dis là mon exemple utilisait la fonction println pour afficher quelque chose mais ce n'est pas forcément le cas du tout. J'aurais pu écrire par exemple le résultat dans un fichier ou faire une interface graphique affichant la valeur. Dans ce cas, on aurait encore mieux vu qu'il n'y a pas de rapport entre l'utilisation de println ou de return.
Dans tout les cas, je pense que tu devrais lire quelques tutoriels de base sur Java pour t'éclairer tout ça car je pense que tu te mélanges un peu.
oui c'est sur, je n'en suis qu'au début.
Mais je crois qu'en fait (si je ne dis pas d'anneries) c'est que grace au return, qui fait partie d'une methode, donc utilisable autant de fois que l'on a besoin, tant que certaines conditions sont réspecté comme le type,nous evite de retaper du texte inutilement.
Et aussi que cette methode est si je peux dire comme ça, dynamique, en fonction de ce qu'on lui donne elle retourne le resultat adéquat??
c'est bien ça??
Oui, c'est plus ou moins ça.
Ce serait peut-être utile de rappeler que toutes les variables déclarées dans une méthode (ainsi que le résultat des calculs effectués) disparaissent juste après l'exécution de cette même méthode.
Tu peux faire tout un tas de calculs compliqués et juste afficher le résultat, qui sera perdu par la suite. Mais tu voudrais peut-être te servir de ce résultat ailleurs dans ton code, par exemple pour initialiser une variable et t'en servir comme condition d'un test:
Code:
1
2
3
4
5
6
7
8
9
10 int i; ... i = résultat du calcul effectué par une méthode qui retourne un int; if (i >= 10) { // faire quelque chose par la suite dans le programme } else { // faire autre chose par la suite dans le programme }
donc, si je ne dis pas n'importe quoi, ces meme methodes permettent de serialiser des resultats??
oui est non
qu'est-ce que tu appelle "sérialiser les résultat".
Le concept est pas bien compliqué: la méthode te retourne une valeur. Et toi, qui a appelé la méthode, tu en fais ce que tu veux. Le rôle du return sert uniquement à marquer quel est le résultat de la méthode et arrêter immédiatement le traitement de la méthode.
j'entends par serialiser des résultats, par exemple je cree un jeu et je veux que quand je quitte le jeux, j'enregistre un score et qu'a mon retour, je continue la ou je me suis arrété.
C'est une serialisation grace au concept de methode ou j'affabule??
car mishuyina, m'a parlé de la possibilité de conserver des resultats aprés une execution
Sinon pour le return je pense avoir saisi
Le concept de méthode n'a rien à voir là dedans. Si tu veux préserver l'état d'un jeu, il faut sauver l'état des différentes objet formant ton jeu et restaurer cet état.
d'accord, je melange tout la et c'est le bazar, je marque comme resolu car ma question de depart a propos du return est resolu!
merçi a vous tous,
Juste une petite précision: je parlais de conserver le résultat d'une méthode après l'exécution de cette méthode et pas après la fin du programme.
Pour garder l'analogie avec le jeu: tu pourrais par exemple passer au niveau supérieur du jeu si tu as obtenu le nombre de points nécessaires ou rejouer le même niveau si ce n'est pas le cas.
Conserver l'état d'un jeu c'est plus complexe et pas tout à fait à la portée de main d'un débutant, comme déjà expliqué par tchize_.
merçi pour la précision, c'est clair que je n'en suis qu'au début.
Sinon, j'ai remarqué quelque chose d'etrange:
un saut de ligne entouré de guillemets, qui devrait normalement donner un " /n" brut mais qui donne un vrai saut de ligne, comment c'est possible??Code:System.out.println("/n")
1) /n n'est pas un saut de ligne, mais le caractère / suivi du caractère n (c'est \n le saut de ligne)
2) println(String) est une méthode qui envoie vers la sortie standard (par défaut la console), la chaîne passée en paramètre, et qui ajoute un saut de ligne à la fin
Doncaffiche dans la console (le <saut de ligne> ne s'affiche pas, c'est juste pour indiquer où il y aura des sauts de ligne dans la console) :Code:
1
2 System.out.println("/n"); System.out.println("toto");
/n<saut de ligne> toto<saut de ligne>
Il existe également une méthode System.out.print() http://docs.oracle.com/javase/tutori...ormatting.html
C'est beau d'être débutant, il y a tout un tas de choses à découvrir! ;)
C'est la raison pour laquelle je n'apprends rien :)