Tableau en paramètre d’une méthode en Java

J’avance lentement mais sûrement dans mon apprentissage de Java (ouais, je préfère coder que de lire un bouquin, c’est comme ça ^^). Hier, je me suis demandé comment on pouvait modifier un tableau passé en paramètre à l’intérieur d’une méthode. Petit article avec code démonstratif pour me souvenir de tout ça.

Comme avec un descendant d’Object, on passe non pas l’objet tableau (qui se trouve quelque part dans le tas) mais une référence vers ce tableau. Grâce à cette référence, on peut modifier les éléments du tableau ; en revanche, on ne peut pas échanger cet objet par un autre. Si on tente d’affecter un nouveau tableau au paramètre à l’intérieur de la méthode, cela n’a pas d’effet en dehors de cette méthode. L’appelant possède toujours une référence sur le « bon » objet, la méthode travaille elle sur la nouvelle référence et donc le nouvel objet.

package tests;

public class Main {

	private static void content(byte[] array) {
		array[0] = 42;
		System.out.println("Content :" + array);
	}

	private static void object(byte[] array) {
		array = new byte[] { 0, 0, 0 };
		System.out.println("Object : " + array);
	}

	private static void print(byte[] array) {
		System.out.println("Print: " + array);
		for (byte b : array) {
			System.out.print(b);
			System.out.print('\t');
		}
		System.out.println("\n");
	}

	public static void main(String[] args) {
		byte[] array = new byte[] { 1, 2, 3 };
		print(array);

		content(array);
		print(array);

		object(array);
		print(array);
	}

}

Sortie console :

Print: [B@1888759
1 2 3

Content :[B@1888759
Print: [B@1888759
42 2 3

Object : [B@6e1408
Print: [B@1888759
42 2 3
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s