web-dev-qa-db-fra.com

String.concat () ne fait pas de concaténation

J'essaie de concaténer une chaîne avec un int et un caractère, y compris des espaces, mais sans obtenir de concaténation. Quelle est la raison? 

private String messages;
Random r = new Random();
int random = r.nextInt(1000);

char ch='s';
messages.concat(String.valueOf(random));
messages.concat(" ");
messages.concat(String.valueOf(ch));
messages.concat(" ");
7
user2744199

concat ne modifie pas les chaînes appelantes, mais en renvoie une nouvelle.

Vous pouvez assigner chaque String résultante à votre résultat comme ceci.-

messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

Ou utilisez simplement l'opérateur surchargé +

messages = String.valueOf(random) + " " + String.valueOf(ch) + " ";
18
ssantos

Strings sont immuables. Vous pouvez soit ajouter le résultat en utilisant la concaténation String comme indiqué dans d’autres réponses, soit vous pouvez utiliser StringBuilder

StringBuilder messages = new StringBuilder();
messages.append(String.valueOf(random));
messages.append(" ");
messages.append(String.valueOf(ch));
messages.append(" ");

Regardez Comment concaténer deux chaînes en Java?


Edit: (à insérer au début de String)

messages.insert(0, "newstring");
10
Reimeus

Une meilleure façon est:

Random r = new Random();
    int random = r.nextInt(1000);

StringBuilder str = new StringBuilder(String.valueOf(random));

str.append("s")
str.append(String.valueOf(random))
str.append(" ");
str.append(String.valueOf(ch));
5
Stathis Andronikos
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";
2
Cruncher
char ch='s';
messages =  messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

La chaîne doit être réaffectée. Lorsque vous modifiez un objet String, vous créez un nouvel objet String dans le pool de constantes String, mais vous n'avez pas affecté cette nouvelle valeur String à une variable de référence. Vous devez donc réaffecter vos modifications. la même variable de référence qui les a créés

0
Ahmed Adel Ismail