Maison  >  Article  >  Java  >  14.Bases de Java - Passage de paramètres

14.Bases de Java - Passage de paramètres

黄舟
黄舟original
2017-02-27 10:55:091062parcourir

Concepts de base

En Java, il existe deux mécanismes de passage de paramètres : le passage par valeur et le passage par adresse.

  • Lorsqu'un type de base est passé en paramètre, c'est une copie de la valeur transmise. Peu importe la façon dont vous modifiez cette copie, la valeur d'origine ne changera pas ; -par valeur.

  • Passer un objet en paramètre copie une copie de l'adresse de l'objet en mémoire et la transmet au paramètre c'est un passage par adresse.


Exemple d'étude

1. Les types de base sont transmis en tant que paramètres

public static void main(String[] args) {    int n =3; // ①

    System.out.println(n); // 3

    chageData(n); // ②

    System.out.println(n); // 3}public static void chageData(int num){
        num = 10; // ③}
<.>Observez le résultat et constatez que la valeur de n n'a pas changé.

Comme n et num sont des types de base, les valeurs sont directement stockées dans des variables.

L'organigramme est le suivant (correspondant à ①②③ dans le code) :

14.Bases de Java - Passage de paramètres


2. 🎜> Premier coup d'oeil à l'exemple String :

En observant les résultats, nous avons constaté que str n'a pas changé. Voici une analyse basée sur l'organigramme :
public static void main(String[] args) {
    String str = "hello"; // ①
    System.out.println(str); // hello

    chageData(str); //②

    System.out.println(str); // hello}public static void chageData(String s){
    s ="world"; // ③}

    Après l'exécution de ①, une référence d'objet str sera générée dans le tas, qui contient l'index d'adresse, qui pointe vers la mémoire. Le véritable objet String
  • génère la référence d'objet s dans ② Grâce à la référence pass-by, il obtient également l'index d'adresse de "hello".
  • Réaffectez les références d'objet s dans ③. Il va de soi que la valeur de l'objet doit être comprise entre "hello" -> "world". Mais cela crée un nouvel objet en raison de l'immuabilité de String, car un nouvel objet est créé une fois que String change.

14.Bases de Java - Passage de paramètres

Regardez l'exemple de StringBuffer :

Observez les résultats et constatez que stb a changé parce que StringBuffer L'objet est mutable et changer son contenu ne créera pas de nouvel objet
public static void main(String[] args) {
    StringBuffer stb = new StringBuffer("hello"); // ①
    System.out.println(stb); // hello

    chageData(stb); // ②

    System.out.println(stb); // hello world}public static void chageData(StringBuffer s){
    s.append("world"); // ③}
}

14.Bases de Java - Passage de paramètres Ce qui précède est le contenu de 14. Bases de Java - Passage de paramètres, veuillez faire attention à plus contenu associé Site Web PHP chinois (www.php.cn) !


Déclaration:
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