Here\'s the code snippet:
public static void main (String[]arg)
{
char ca = \'a\' ;
char cb = \'b\' ;
System.out.println (ca + cb) ;
}
+ of two char is arithmetic addition, not string concatenation. You have to do something like "" + ca + cb, or use String.valueOf and Character.toString methods to ensure that at least one of the operands of + is a String for the operator to be string concatenation.
If the type of either operand of a
+operator isString, then the operation is string concatenation.Otherwise, the type of each of the operands of the
+operator must be a type that is convertible to a primitive numeric type, or a compile-time error occurs.
As to why you're getting 195, it's because in ASCII, 'a' = 97 and 'b' = 98, and 97 + 98 = 195.
This performs basic int and char casting.
char ch = 'a';
int i = (int) ch;
System.out.println(i); // prints "97"
ch = (char) 99;
System.out.println(ch); // prints "c"
This ignores the issue of character encoding schemes (which a beginner should not worry about... yet!).
As a note, Josh Bloch noted that it is rather unfortunate that + is overloaded for both string concatenation and integer addition ("It may have been a mistake to overload the + operator for string concatenation." -- Java Puzzlers, Puzzle 11: The Last Laugh). A lot of this kinds of confusion could've been easily avoided by having a different token for string concatenation.