1

这个问题在谷歌上很难问,尽管很简单。基本上我写了这个:

      public static void main(String[] args) {
         char cipher[] = {'a','b','c','c','d','t','w'};
           System.out.println(cipher[0]+cipher[2]);
          }
 }

println 结果是:196 而不是 ac。当然,当我这样做的时候

 System.out.println(cipher[0]+""+cipher[2]);

它按预期向我展示了交流电。所以我的问题是这 196 是什么?谢谢!

4

4 回答 4

5

所以我的问题是这 196 是什么?

它是 'a' 的 UTF-16 代码单元(即 97),然后是 'c' 的 UTF-16 代码单元(即 99)。

除了字符串连接之外,加法运算符的操作数会进行二进制数字提升(JLS 5.6.2),因此您实际上是在执行int值的加法。您的代码相当于:

System.out.println((int) cipher[0] + (int) cipher[2]);
于 2013-10-27T21:01:37.107 回答
0

196 是 'a' 的 ASCII 值 + 'c' 的 ASCII 值。

当您将chars 加在一起时,没有任何其他提示,Java 将它们解释为数字。

于 2013-10-27T21:02:28.823 回答
0

在 Java 中,achar本质上是一个无符号的 16 位整数,其整数值对应于它们的 Unicode 值。196 是 'a' ja 'c' 的整数表示的总和。

于 2013-10-27T21:02:57.310 回答
0

结果 196 是 ASCII 值 de 'a' (ASCII 97) + 'c' (ASCII 99)。

于 2013-10-27T21:03:42.657 回答