Maison  >  Article  >  interface Web  >  Introduction à l'affectation des variables de type String dans les connaissances Java_Basic

Introduction à l'affectation des variables de type String dans les connaissances Java_Basic

WBOY
WBOYoriginal
2016-05-16 15:08:181748parcourir

Exécutez le code suivant, quel est le résultat ?

package com.test;

public class Example {
  
  String str = new String("good");
  char[] ch = { 'a', 'b', 'c' };

  public static void main(String[] args) {
    Example ex = new Example();
    ex.change(ex.str, ex.ch);
    System.out.println(ex.str);
    System.out.println(ex.ch);
  }

  public void change(String str, char ch[]) {
    str = "test ok";
    ch[0] = 'g';
  }
  
}

Les résultats sont les suivants :

good
gbc

Commentaire :

String en Java est immuable, c'est-à-dire immuable. Une fois initialisé, le contenu pointé par sa référence est immuable (remarque : le contenu est immuable).

En d'autres termes, en supposant qu'il y ait String str = "aa"; str = "bb"; la deuxième instruction ne modifie pas le contenu de l'adresse de stockage d'origine de "aa", mais en ouvre une autre. space. Utilisé pour stocker "bb" en même temps, car "aa" vers lequel str pointait à l'origine est désormais inaccessible, jvm le recyclera automatiquement via GC.

Lors de l'appel d'une méthode, le type String et le tableau sont passés par référence. Dans le code ci-dessus, str est passé en paramètre à la méthode change(String str, char ch[]) Le paramètre de méthode str pointe vers la chaîne pointée. par str dans la classe, mais l'instruction str = "test ok"; fait que le paramètre de méthode str pointe vers l'adresse nouvellement allouée, qui stocke "test ok", tandis que la str d'origine pointe toujours vers "good". Pour les tableaux, dans la méthode change, le paramètre de méthode ch pointe vers le tableau pointé par ch dans la classe, et l'instruction ch[0] = 'g' modifie le contenu du tableau pointé par ch dans la classe

Regardons à nouveau le code suivant. Quel est le résultat de son fonctionnement ?


package com.test;

public class Example {
  
  String str = new String("good");
  char[] ch = { 'a', 'b', 'c' };

  public static void main(String[] args) {
    Example ex = new Example();
    ex.change(ex.str, ex.ch);
    System.out.println(ex.str);
    System.out.println(ex.ch);
  }

  public void change(String str, char ch[]) {
    str = str.toUpperCase();
    ch = new char[]{ 'm', 'n' };
  }
  
}

Les résultats sont les suivants :

good
abc
Avec l'explication précédente, ce résultat est-il attendu ? !

L'introduction ci-dessus à l'affectation des variables de type String en Java est tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence et j'espère que vous prendrez en charge Script Home.

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