So I wanted to add a character to a string, and in some cases wanted to double that characters then add it to a string (i.e. add to it itself first). I tried this as shown b
String string = "" + X + X;
is an example of concatenation. By pre-pending the empty string you specify that the result should be a string. The first line of code tells the compiler that you are adding 2 chars (or ints) which should result in an int, and not a string.
It's because String + Char = String, similar to how an int + double = double.
Char + Char is int despite what the other answers tell you.
String s = 1; // compilation error due to mismatched types.
Your working code is (String+Char)+Char. If you had done this: String+(Char+Char) you would get a number in your string. Example:
System.out.println("" + ('x' + 'x')); // prints 240
System.out.println(("" + 'x') + 'x'); // prints xx - this is the same as leaving out the ( ).
char
+ char
returns an int
so the compiler complains that String string = (int)
, which is indeed wrong.
To concatenate the chars, you can use the empty String (""
) at the beginning so the +
operator will be for String
concatenation or use a StringBuilder that can append chars as well.
char s = 'X';
String string = new StringBuilder().append(s).append(s).toString();
Note: the char
variable is s
, not X
.
When you do
char s = 'X'; String string = X + X;
Why not do this instead?
char s = 'X'; String string = s + s;
Adding in the "" changes the return type to a string. Leaving it out means the return type is a char which doesn't match.
In Java, char
is a primitive integral numeric type. As such, the operator + is defined to mean addition of two chars, with an int
result. The operator means concatenation only on strings. So one way to do it is
"" + char1 + char2
This will coerce the right-hand operand to a string, which is what you want to achieve.
A side point: char
is the only unsigned primitive numeric type in Java and in one project of mine I specifically use it as such.