+二
char是算术加法,不是字符串连接。您必须执行
"" + ca +cb或之类的 *** 作,或使用
String.valueOf和
Character.toString方法来确保 *** 作符中的至少一个
+是
String用于字符串串联的运算符。[JLS
15.18加法运算符](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.18)
如果
+运算符的任何一个 *** 作数的类型为String,则该 *** 作为字符串连接。否则,运算
+符的每个 *** 作数的类型必须是可转换为原始数字类型的类型,否则会发生编译时错误。
至于为什么要得到195,这是因为使用ASCII,
'a' = 97和
'b' = 98和
97 + 98 = 195。
这执行基本
int和
char强制转换。
char ch = 'a'; int i = (int) ch; System.out.println(i); // prints "97" ch = (char) 99; System.out.println(ch); // prints "c"
这忽略了字符编码方案的问题(初学者不应该担心…!)。
值得注意的是,Josh Bloch指出,不幸的
+是,对于字符串连接和整数加法都被重载了(“对于字符串连接,重载+运算符可能是一个错误。”- Java
Puzzlers ,难题11:最后笑)。通过为字符串串联使用不同的标记,可以很容易地避免许多此类混淆。
也可以看看
- 串联一个空字符串来进行字符串转换真的那么糟糕吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)