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 < ; 🎜>
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
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.