Question

I am trying to concatenate a String with an int and char including spaces, but not getting any concatenation. What is the reason?

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(" ");
Was it helpful?

Solution

concat does not alter the invoking strings, but returns a new one.

You may assign each resulting String to your result like this.-

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

Or just use the overloaded operator +

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

OTHER TIPS

Strings are immutable. You can either append the result using String concatenation as shown in other answers or you can use StringBuilder

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

Have a look at How do I concatenate two strings in Java?


Edit: (to insert at beginning of String)

messages.insert(0, "newstring");

A better way is :

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));
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";
char ch='s';
messages =  messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

String should be RE-Assigned, when you edit a String object, you create a new String Object in the String constant pool, but you didnt assign this new String value to any reference variable, so you will need to re-assign your modifications to the SAME REFERENCE VARIABLE that created them

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top