1. Méthode de transfert de paramètres
Pour résoudre le problème du titre, introduisez d'abord la méthode de passage des paramètres. Actuellement, il existe trois méthodes de transfert de paramètres principaux pour divers langages de programmation:
1. Passer par valeur
2. Passer par référence
3. Passer par pointeur
La méthode de représentation de passage de valeur (fonction) reçoit une copie de la variable fournie par l'appelant sans modifier la valeur du paramètre; La valeur de la variable fournie par l'appelant est transmise par la référence; La valeur de la valeur (fonction) est reçue par le pointeur par le pointeur reçue par le pointeur sans modifier la valeur et l'adresse du pointeur, mais l'adresse indiquée par le pointeur peut être modifiée.
2. Méthode de transfert de paramètres Java
Malheureusement, il n'y a qu'une seule méthode de passage de paramètres fournie par Java, qui est transmise par valeur. C'est-à-dire que la méthode obtient une copie de toutes les valeurs de paramètre, et la méthode ne peut pas modifier le contenu de la variable de paramètre qui lui est transmis.
Les types de paramètres de la méthode Java peuvent être divisés en deux catégories:
1. Types de données de base
2. Référence d'objet
Les amis qui ont de l'expérience dans le développement de Java savent que pour les types de données de base, les méthodes Java ne peuvent pas modifier le contenu des variables. Le contenu ne peut donc pas être modifié par référence à l'objet de la classe personnalisée? Cela peut s'expliquer par un simple exemple. Le code est le suivant:
classe PubPc MyClass {objet privé Num; PubPc myClass (objet num) {this.num = num; } objet PubPc getnum () {return num; } pubpc void setNum (objet num) {this.num = num; }} classe PubPc Main {PubPc Static Void Change (myClass myClass) {myClass.setNum (100); } PubPc static void main (String [] args) {myClass a = new myClass (10); System.out.println ("La valeur avant d'appeler la méthode de modification est:" + a.getNum ()); changement (a); System.out.println ("La valeur après avoir appelé la méthode de modification est:" + a.getNum ()); }}Les résultats de sortie d'exécution de code ci-dessus sont les suivants:
D'après les résultats, on peut voir que la méthode de changement peut modifier l'état de l'objet. En d'autres termes, les méthodes Java peuvent modifier l'état du paramètre d'un objet. Cela signifie-t-il donc que les méthodes Java utilisent des passes de référence pour les paramètres des types de données personnalisés (classes personnalisées)? Pour confirmer les résultats, vous pouvez écrire un exemple simple et toutes les classes personnalisées sont toujours MyClass ci-dessus. Le code est le suivant:
PubPc Static Void Swap (MyClass A, MyClass B) {MyClass Tmp = A; a = b; b = tmp; } PubPc static void main (String [] args) {myClass a = new myClass (10); MyClass b = new myClass (100); System.out.println ("La valeur d'un swap avant est:" + a.getNum ()); System.out.println ("La valeur de B avant le swap est:" + b.getNum ()); échange (a, b); System.out.println ("La valeur d'un swap après le swap est:" + a.getNum ()); System.out.println ("La valeur de B après l'échange est:" + b.getNum ()); }}Les résultats de l'exécution sont les suivants:
D'après les résultats ci-dessus, nous pouvons constater que les méthodes Java utilisent toujours le passage de la valeur pour le passage des paramètres des classes personnalisées, pas le passage de référence. Alors pourquoi les méthodes Java peuvent-elles modifier l'état d'objet?
Vous pouvez considérer le processus d'exécution spécifique de l'appel de la méthode de modification pour trouver la réponse.
Le processus d'exécution spécifique est:
MyClass est initialisé en une copie avec le paramètre réel A, qui est une référence à l'objet.
La méthode setnum est appliquée à la référence de cet objet. Le nombre de l'objet MyClass référencé par MyClass et A est changé en 100.
Une fois la méthode terminée, la variable de paramètre MyClass n'est plus utilisée. Et A continue de se référer à l'objet MyClass dont le NUM devient 100. Comme le montre la figure ci-dessous.
Par conséquent, la raison pour laquelle les méthodes Java peuvent modifier l'état du paramètre de l'objet est que la méthode obtient une copie de la référence de l'objet, et la référence de l'objet et d'autres copies dans la méthode se réfèrent au même objet en même temps.
Maintenant, résumons les paramètres de la méthode Java:
Les méthodes ne peuvent pas modifier les paramètres d'un type de données de base;
Les méthodes peuvent modifier l'état des paramètres d'objet;
Les méthodes ne peuvent pas faire référence aux paramètres d'objet à un nouvel objet (la raison est de se référer au processus d'exécution spécifique lors de l'appel de la méthode de modification).
3. Échange des valeurs numériques des variables
Puisque vous connaissez déjà la raison, il n'est pas difficile de connaître la raison. Publiez directement mon code personnel:
PubPc Static Void Swap (MyClass A, MyClass B) {objet tmp = a.getnum (); a.setnum (b.getnum ()); b.setnum (tmp);}Les résultats de l'exécution sont les suivants:
L'échange est valide.
Références: Java Core Technology Volume I.
L'article ci-dessus sur Java échange la méthode de mise en œuvre numérique de deux variables est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.