Puis-je définir la valeur d'une Chaîne de caractères en Java sans l'aide d'un constructeur?
Comment-Faire/je Peux définir la valeur d'un objet de type String en Java (sans la création d'un nouvel objet de type String)?
Vous devez vous connecter pour publier un commentaire.
Il n'existe pas de "jeu" des méthodes sur
String
. Les chaînes sont immuable en Java. Pour modifier la valeur d'unString
variable, vous devez affecter une chaîne à la variable. Vous ne pouvez pas changer la chaîne existante.Attribution de ne pas créer un nouvel objet - la copie de la référence. Notez que même si vous écrivez quelque chose comme ceci:
il ne créer un nouvel objet de type string à chaque fois qu'il est exécuté. L'objet de type string viendra de la chaîne de la piscine.
En fait il n'y a aucun moyen de le faire en Java, les objets de Chaîne sont immuables par défaut.
En fait, c'est une des raisons pourquoi l'utilisation du
"+"
opérateur de concaténation comme"str1" + "str2"
est terriblement inefficace, parce que ce qu'il fait est de copier chaque chaîne pour produire un troisième.Selon votre besoin, vous devriez envisager d'utiliser
StringBuilder
Les chaînes sont immuables, donc vous ne pouvez pas modifier la valeur d'un déjà créé chaîne.
L'objet String est immuable en Java afin que toutes les modifications de créer un nouvel objet de type String. Utiliser un StringBuilder si vous souhaitez apporter des modifications à une chaîne de caractères comme un objet sans créer de nouveaux objets. En bonus, la StringBuilder vous permet de pré-allouez de la mémoire supplémentaire si vous savez quelque chose à propos de l'éventuelle longueur de votre chaîne.
Je suis tombé sur cette question parce que j'ai pour définir une chaîne de caractères au sein d'une "enfermant type" - un type anonyme. Mais toutes les variables que je veux mettre à l'intérieur et à l'utilisation à l'extérieur doit être définitive.
La solution la plus simple est de utiliser StringBuilder - c'est une mutable Chaîne.
Ça dépend un peu de votre définition de l'objet. Si vous voulez dire la référence, pas de. Une référence est toujours créé. Si tu parles de la mémoire utilisée par les personnages, c'est sûr.
Chaînes sont internés (si possible), ce qui signifie que dans une affectation:
il y a 2 références (pointeurs vers un emplacement de la mémoire), mais
Hello
est dans la mémoire 1 seul endroit. C'est l'une des raisons les Chaînes ne peuvent pas être modifiés.Bien sûr, vous pouvez accéder à l'intérieur char tableau via la réflexion. Mais c'est généralement une mauvaise idée de le faire. Plus sur http://www.eclipsezone.com/eclipse/forums/t16714.html.
StringBuilder
instances de la place.