为什么java字符打印号码?

时间:2012-08-23 05:38:40

标签: java

我有以下课程,见

   public class Go {
     public static void main(String args[]) {
      System.out.println("G" + "o");
      System.out.println('G' + 'o');
     }
   }

这是编译结果;

  Go
  182

为什么我的输出包含数字?

7 个答案:

答案 0 :(得分:9)

在第二种情况下,它会添加两个字符的unicode代码(G-71和o-111)并打印总和。这是因为char被视为数字类型,因此在这种情况下+运算符是通常的求和。

答案 1 :(得分:2)

带有字符常量+

'G' + 'o'运算符会打印添加charCode,而"G" + "o"Go打印{{1}}。

答案 2 :(得分:2)

Java中的加号会添加两个数字,除非其中一个是一个字符串,在这种情况下它会进行字符串连接。

在你的第二种情况下,你没有字符串(你有char,并且会添加它们的Unicode代码点。)

答案 3 :(得分:1)

System.out.println("G" + "o");
  System.out.println('G' + 'o');

第一个+充当连续操作员并连接两个字符串。但在第二种情况下,它充当了一个加法运算符,并添加了这两个字符的ASCII值(或者你说的是UNICODE)。

答案 4 :(得分:1)

This以前的SO问题应该对这个问题有所了解,在你的情况下,你基本上最终会添加他们的ASCII值(对于G为71)+(对于o为111)= 182,你可以检查值{ {3}})。

您必须使用here将该字符转换回字符串。

答案 5 :(得分:0)

+ 始终用于sum(添加两个数字的目的),如果它是String以外的数字,如果它是String则用于连接目的两个String

我们知道java中的char总是代表数字

这就是为什么在你的情况下,它实际上将两个数字的总和计算为(71+111)=182而不是将字符连接为g + o = go

如果您将其中一个更改为String,那么它将连接这两个 例如System.out.println('G' + "o") 它会按预期打印Go

答案 6 :(得分:0)

intString都定义了“+”运算符:

int + int = int

String + String = String

添加char + char时,最佳匹配将是:

(char->int) + (char->int) = int

但是""+'a'+'b'会给你ab

( (String) + (char->String) ) + (char->String) = String