La question la plus fréquemment posée par les programmeurs débutants est de savoir comment les paramètres sont transmis en Java. Généralement, les langages de programmation utilisent le passage par valeur et le passage par référence pour transmettre les paramètres aux méthodes. Cependant, Java ne prend pas en charge ces deux méthodes et utilise à la place le passage par valeur pour transmettre les valeurs de type primitif et de référence. Dans cet article, nous allons apprendre à transmettre des paramètres par valeur via un exemple de programme.
Commençons la discussion en comprenant le mécanisme de stockage de Java. Les noms des variables de référence, des méthodes et des classes sont stockés sur la pile et leurs valeurs sont stockées sur le tas. Cependant, les primitives et leurs valeurs sont stockées directement dans la mémoire de la pile.
Comme mentionné précédemment, Java ne prend en charge que le passage par valeur des types de base et des types de référence, ce qui signifie que lorsqu'une méthode est appelée, une copie de chaque valeur de paramètre est transmise à la méthode
Pour les types de base tels que int, double et Boolean, la valeur du paramètre est la même que la valeur d'origine de la variable. Par exemple, si nous avons une variable "x" avec une valeur de 10 et que nous passons "x" comme argument à une méthode, la méthode reçoit une copie de la valeur d'origine 10 comme argument.
Étant donné que les variables de référence sont stockées sur la pile, pour les types de référence tels que les tableaux, les objets et les chaînes, la valeur du paramètre est la référence ou l'adresse de la variable donnée. Par exemple, si nous avons un tableau 'arr' avec les éléments {1, 2, 3} et que nous passons 'arr' comme paramètre à une méthode, alors la méthode recevra une référence ou une copie de l'adresse de 'arr' comme son paramètre.
Discutons de quelques termes liés au passage de paramètres en Java
Les méthodes sont des blocs de code qui peuvent être réutilisés plusieurs fois pour effectuer une seule opération. Cela nous fait gagner du temps et réduit également la taille du code.
accessSpecifier nonAccessModifier return_Type method_Name(Parameters) { // Body of the method }
Ici,
accessSpecifier - utilisé pour définir l'accessibilité d'une méthode. Il peut être public, protégé, par défaut et privé.
nonAccessModifier - Il affiche des fonctionnalités ou un comportement supplémentaires d'une méthode telle que static et final.
return_Type - Le type de données que la méthode renverra. Nous utilisons le mot-clé void lorsqu'une méthode ne renvoie rien.
Paramètres - sont des variables nommées transmises lors de la définition de la méthode et utilisées comme espaces réservés pour les paramètres. Ils importent en fait les paramètres dans la méthode spécifiée. Ils permettent de généraliser les méthodes. Ici, la généralisation signifie que nous pouvons réutiliser une seule méthode sur diverses données selon les besoins.
Paramètres - sont les valeurs réelles transmises lorsque la méthode est appelée. Ils doivent correspondre aux types de paramètres transmis dans la définition de la méthode.
En passant les paramètres de cette façon, une copie de la valeur du paramètre est transmise à la méthode donnée. Cette méthode peut modifier la copie mais ne peut pas affecter la valeur originale du paramètre.
Avec cette façon de transmettre les paramètres, la référence ou l'adresse du paramètre est transmise à la méthode donnée. Cette méthode peut modifier la valeur originale du paramètre par référence
Définissez deux méthodes définies par l'utilisateur. La méthode "changeVal()" est utilisée pour modifier le type d'origine et la méthode "changeAray()" est utilisée pour modifier le type référence.
Dans la méthode main(), déclarez et initialisez une valeur de type entier et une valeur de type référence.
Maintenant, appelez ces méthodes définies par l'utilisateur pour effectuer l'action et quitter
import java.util.*; public class ParameterPassing { public static void changeVal(int n) { n = n * 2; // modifying value System.out.println("Inside method: n = " + n); } public static void changeAray(int[] a) { a[0] = a[0] * 2; // modifying value System.out.println("Inside method: a = " + Arrays.toString(a)); } public static void main(String[] args) { // for the Primitive type int val1 = 10; System.out.println("Before calling changeVal method: val1 = " + val1); changeVal(val1); // calling the method System.out.println("After calling changeVal method: val1 = " + val1); // for Reference type int[] aray = {1, 2, 3}; System.out.println("Before calling changeAray method: arr = " + Arrays.toString(aray)); changeAray(aray); // calling the method System.out.println("After calling changeAray method: arr = " + Arrays.toString(aray)); } }
Before calling changeVal method: val1 = 10 Inside method: n = 20 After calling changeVal method: val1 = 10 Before calling changeAray method: arr = [1, 2, 3] Inside method: a = [2, 2, 3] After calling changeAray method: arr = [2, 2, 3]
Comme vous pouvez le voir dans le résultat, pour le type primitif "val1", sa valeur ne change pas après l'appel de la méthode "changeVal". Pour le type de référence "arr", sa valeur changera après l'appel de la méthode "changeAray".
Dans cet article, nous avons découvert les méthodes définies par l'utilisateur et expliqué comment transmettre les paramètres de méthode en Java avec un exemple. Passer une valeur d'un type référence en tant que paramètre n'est pas la même chose qu'un type primitif. Java prend uniquement en charge la transmission de références à des types non primitifs pour modifier leur état, pas leur identité.
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!