Notion de réference

Résolu
Signaler
Messages postés
64
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
21 octobre 2008
-
Messages postés
64
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
21 octobre 2008
-
Bonjour;
j'ai une question sur la notion de réference:

Soit une classe A comportant un membre String title, le constructeur A(String t) initialise ce membre avec la chaîne t, vaut-il mieux écrire:

public class A {
private title;
A(String t){
title = t;
...

ou bien

public class A {
private title;
A(String t){
title = new String(t);
...
pouvez m'expliquez la difference entre les deux
Les deux solutions sont elles strictement équivalentes pour la suite de l'exécution du programme ? ??


Merci

5 réponses

Messages postés
64
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
21 octobre 2008

merci pour vos réponses, entre temps j'avais posé la même question sur un autre forum, et la dernière réponse explique très bien cette notion, je vous mets le lien:

http://www.developpez.net/forums/viewtopic.php?t=449524
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
12
Salut
Oui c'est équivalent.
Rien de moins ou de plus ne se passe entre les 2 exécutions

Voila
A++
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
12
Oups j'ai oublié de préciser que tu devras mettre private String title au lieu de ce que tu as mis
Messages postés
64
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
21 octobre 2008

Mais avec : title = t, on afecte la réference à title
par contre avec : title = new string (t) là on crée un nouvel emplacement t ...

je sais qu'il ya quelque chose dans ce genre, je ne pense pas que sa soit la même chose !!!!

merci
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

la classe string n'est pas le meilleur exemple car la variable de base et la classe enveloppe porte le même nom.
prenons plutôt les entiers pour illustrer; une variable de base se note int et la classe enveloppe integer. les variables int passées en paramétre à une méthode sont passées par valeur alors que les variable objet sont passées par référence. pour un int passé en référence on utilise une classe enveloppe (integer).