new String()
est une expression qui produit une String
... et un String
est immuable, peu importe comment il est produit.
(En demandant si new String()
est mutable ou pas, c'est absurde. C'est le code de programme, pas une valeur. Mais je suppose que ce n'est pas vraiment ce qu'on voulait dire.)
Si je crée un objet de type string comme String c = "";
est une entrée vide créé dans la piscine?
Oui, c'est, une entrée est créée pour la chaîne vide. Il n'y a rien de spécial au sujet d'un vide String
.
(Pour être pédant, la piscine d'entrée de ""
est créée, longtemps avant que votre code est exécuté. En fait, il est créé lorsque votre code est chargé ... ou peut-être même plus tôt que cela.)
Donc, j'ai voulu savoir si le nouveau segment de l'objet est immuable, ...
Oui, il est. Mais l'immutabilité est une propriété fondamentale des objets String. Tous String
objets.
Vous le voyez, l' String
API n'est tout simplement pas fournir toutes les méthodes pour modifier un String
. Donc (en dehors de quelques dangereux et insensé1 astuces en utilisant la réflexion), vous ne pouvez pas muter un String
.
et si oui, quel était le but?.
La raison en est que Java String
est conçu comme un immuable de la classe, c'est la simplicité. Il le rend plus facile d'écrire des programmes corrects, et de lire / raison à propos d'autres personnes de code si la base de la chaîne de la classe fournit un immuable de l'interface. (Ou au moins, qui est la raison de cette décision de conception, tel que je le comprends.)
En fonction de la réponse, je suppose que d'autres références à la même variable est l'une des raisons. S'il vous plaît laissez-moi savoir si je suis en droit de le comprendre.
Pas de. Il est plus fondamental que cela. Simplement, tout String
des objets sont immuables. Il n'est pas compliqué cas particulier de raisonnement nécessaires pour comprendre le présent. Il vient de >>est<<.
Pour l'enregistrement, si vous voulez un mutables "chaîne comme" objet en Java, vous pouvez utiliser StringBuilder
ou StringBuffer
. Mais ce sont les différents types de Chaîne.
1 - La raison pour laquelle ces astuces sont (OMI) dangereux et stupide, c'est qu'ils affectent les valeurs de chaînes qui sont potentiellement partagées par d'autres parties de votre application via la chaîne de la piscine. Cela peut provoquer le chaos ... dans les moyens que le gars à côté, le maintien de votre code a peu de chance de la traque.