BigInteger et le passage par référence
Bonjour
J'écrivais une fonction qui utilise des BigInteger en argument
donc de la forme
Code:
1 2 3 4 5
|
public void fonctionInutile(BigInteger a, BigInteger b){
a = a.add(BigInteger.ONE);
b = a;
} |
apres dans le main si je fais un System.out.println("a = "+a+" b="+b); avant et apres l'éxecution de la fonction (et en ayant initialisé a et b préalablement bien sur) et bien on a la même chose ce qui signifierait que les BigInteger sont passés par valeur (comme des int normaux). Etrange non? Est-ce voulu pour que la manipulation de BigInteger se fasse comme celle des int? Au passage je me suis éja fait avoir par:
Code:
1 2 3 4
|
for(BigInteger i = BigInteger.ZERO;(condition d'arret);i.add(BigInteger.ONE)){
...
} |
qui est une boucle infinie. Il faut penser à réattribuer i par i = i.add(BigInteger.ONE) ce qui ne me semble pas spécialement logique syntaxiquement (je pensais que la méthode add modifierai l'instance de i). Tout se passe donc comme si on manipulait des int.
Ok je comprends mieux maintenant
J'avais pas conscience de l'existence d'objets immuables en Java d'ou ma mauvaise interprétation. Merci de vos réponses.