public static void
public static void

Reputation: 1203

Why can I add characters to strings but not characters to characters?

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?

Upvotes: 3

Views: 1528

Answers (7)

Xabster
Xabster

Reputation: 3720

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 ( ).

Upvotes: 7

Marko Topolnik
Marko Topolnik

Reputation: 200168

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.

Upvotes: 3

Abstract
Abstract

Reputation: 684

 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");

Upvotes: 0

Luiggi Mendoza
Luiggi Mendoza

Reputation: 85779

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.

Upvotes: 4

Clocks
Clocks

Reputation: 411

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.

Upvotes: 0

Andrew_CS
Andrew_CS

Reputation: 2562

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

Upvotes: 0

kelorek
kelorek

Reputation: 6214

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

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

Upvotes: 0

Related Questions