Maison > Java > javaDidacticiel > le corps du texte

Analyse de la différence entre le passage par valeur et le passage par référence en Java (avec code)

不言
Libérer: 2018-08-21 14:15:06
original
1950 Les gens l'ont consulté

Le contenu de cet article concerne l'analyse de la différence entre le passage de valeur et le passage de référence (passage d'adresse) en Java (avec code). J'espère que ce sera le cas. t'aider.

passer par valeur (passer par valeur) fait référence au passage des paramètres réels Copiez et transmettez-la à la fonction, afin que si les paramètres sont modifiés dans la fonction, les paramètres réels ne seront pas affectés. L'objet transféré est souvent une structure de données de base telle qu'un type de caractère entier à virgule flottante.

public class PassByValueReference {
	//值传递
	public static void main(String[] args) {
		int x = 9;
		pass(x);
		System.out.println(x);
	}
	
	private static void pass(int y) {
		System.out.println(y);
		y=0;
	}
}
Copier après la connexion
Voici le résultat courant : (Le changement de la valeur de l'entier y n'affecte pas la valeur de l'entier x)

Pass by reference (pass by reference) fait référence au passage de l'adresse du paramètres réels directement lors de l’appel d’une fonction dans la fonction, les modifications apportées aux paramètres de la fonction affecteront les paramètres réels. (Semblable à une communauté) L'objet transféré est souvent une structure de données d'adresse telle qu'un tableau.

public class PassByValueReference {
        //引用传递
	public static void main(String[] args) {
		int [] x = {9};
                System.out.println(x[0]);
		pass(x);
		System.out.println(x[0]);
	}
	
	public static void pass(int [] y) {
		y[0] = 0;
	}
}
Copier après la connexion
Voici les résultats : (Les changements dans la valeur du tableau y affectent également la valeur du tableau x)

( Transfert de valeur et référence Transférer les connaissances sur les piles et les tas utilisés dans les structures de données informatiques)

De plus, si vous n'êtes pas encore entré en contact avec la connaissance des fonctions et des méthodes en Java, vous pouvez simplement utiliser l'affectation pour comprendre : (les résultats en cours sont similaires à ceux ci-dessus)

public class PassByValueReference {
	//值传递(赋值非函方式)
	public static void main(String[] args) {
	    int x = 9;
            System.out.println(x);
	    y = x;
            y = 10;
	    System.out.println(x);
	}
}
Copier après la connexion
Ici x et y sont les types de données de base. Après affectation, la valeur de x est transmise à y, ce qui équivaut à faire une copie. , plutôt que de donner l'intégralité du x (c'est-à-dire l'adresse x) à y.

public class PassByValueReference {
        //引用传递(赋值非函方式)
        public static void main(String[] args) {
		int [] x = {1};
		System.out.println(x[0]);
		int [] y = x;
		y[0] = 0;
		System.out.println(x[0]);
	}
}
Copier après la connexion
Ici, x et y sont des tableaux. Cette fois, le code ne définit pas simplement x[0]=y[0], mais définit directement x=y. Cette instruction d'affectation modifie le tableau de x. les adresses sont toutes données à y, ce qui équivaut à être dans le « même bateau » et à changer ensemble. Lorsque y[0] change, x[0] change également.

Recommandations associées :

Explication détaillée du passage de valeurs Java et du passage de références

L'ingénieur logiciel Java apprend php -13. Passage de valeur Passer par référence

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!