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

前端 未结 7 770
陌清茗
陌清茗 2020-12-21 09:18

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

相关标签:
7条回答
  • 2020-12-21 09:45

    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.

    0 讨论(0)
  • 2020-12-21 09:51

    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 ( ).
    
    0 讨论(0)
  • 2020-12-21 09:52

    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.

    0 讨论(0)
  • 2020-12-21 09:52

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

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

    0 讨论(0)
  • 2020-12-21 09:58

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

    0 讨论(0)
  • 2020-12-21 09:59

    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.

    0 讨论(0)
提交回复
热议问题