Why can I add characters to strings but not charac

2019-08-05 14:26发布

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 below.

char s = 'X'; 
String string = s + s;

This threw up an error, but I'd already added a single character to a string so I tried:

String string = "" + s + s;

Which worked. Why does the inclusion of a string in the summation cause it to work? Is adding a string property which can only be used by characters when they're converted to strings due to the presence of a string?

7条回答
聊天终结者
2楼-- · 2019-08-05 15:03

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.

查看更多
戒情不戒烟
3楼-- · 2019-08-05 15:16

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 ( ).
查看更多
beautiful°
4楼-- · 2019-08-05 15:16
 String string = X + X;

Here X i'ts threated as a variable

You should use something as

String string ="x x";

Or

String x = "something";
String y = "else";

then String string= x+y; should work just fine, this is because you are concatening with the "+" sign, you could also use

string = string.concat(x+y); 

or

string = string.concat("something"+"else");
查看更多
冷血范
5楼-- · 2019-08-05 15:20

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.

查看更多
Fickle 薄情
6楼-- · 2019-08-05 15:21

When you do char s = 'X'; String string = X + X;

Why not do this instead? char s = 'X'; String string = s + s;

查看更多
Animai°情兽
7楼-- · 2019-08-05 15:24

Adding in the "" changes the return type to a string. Leaving it out means the return type is a char which doesn't match.

查看更多
登录 后发表回答