8
votes

Les matrices de chaîne sont-elles mutables?

Je me demande si des tableaux de chaîne en Java sont mutables? Je sais que les chaînes sont immuables, mais comment des tableaux de chaîne?

Si j'ai un tableau à chaîne et modifiez le contenu, un nouvel objet de chaîne sera-t-il créé? Ou la valeur réelle sera-t-elle simplement changée?

Merci d'avance


1 commentaires

Les tableaux en Java sont mutables, il ne dépend pas du type de tableau, ils seront mutables dans tous les cas.


4 Réponses :


19
votes

La chaîne s contenu dans la chaîne [] est vraiment immuable, mais le tableau est mutable.

Ceci est bien expliqué dans Cette réponse :

  • Immutabilité signifie que les objets d'un certain type ne peuvent pas changer de manière significative aux observateurs extérieurs
    • entier , string , etc. est immutable
    • généralement tous les types de valeur doivent être
    • Les objets de tableau sont mutables
      • Il peut s'agir d'une gamme de références à des types immuables, mais la matrice elle-même est mutable
        • Ce qui signifie que vous pouvez définir ces références à tout ce que vous voulez
        • aussi vrai pour le tableau de primitives
        • Un tableau immuable ne sera pas pratique
        • Les références aux objets peuvent être partagées

0 commentaires

5
votes

Autant que je me souvienne que le champ de votre réseau fera référence à une autre chaîne xxx

Votre tableau peut être modifié. les cordes elles-mêmes non.


0 commentaires

1
votes

Dans les tableaux, chaque élément n'est qu'un pointeur à un objet. Donc, lorsque vous faites quelque chose comme

String one = "1";
String two = "2";
String three = "3";
String four = "4";
String[] myStringArray = {one, two, three};
myStringArray[2] = four;


0 commentaires

1
votes

La chaîne string [] code> ne contient pas de références aux variables de chaîne, car certaines personnes pourraient dire. Le tableau string [] code> contient des valeurs (ou plus exactement des références à des valeurs), mais non des références aux variables.

   change(arr);
   // where arr is a String[] array of {"1","2"}
   // see the procedure below

     System.out.println(arr[0]);
  // Result is "one"
  
        
  // ...
    
    static void change(String[] someArray){
        someArray[0]="one";
    }


0 commentaires