3

我想知道,这两个语句有什么区别,这些可能很简单

      String ss="myname";
      char[] charArray = ss.toCharArray();
      for ( char character : charArray )
         {
            System.out.println( +character );//Statements are here what does plus refers here:

            System.out.println( character ); //Statements are here:

     } 

我得到代码的输出没有错误,但对它的工作原理毫无疑问?这里会发生什么?

如果你投反对票,请告诉我原因。

4

1 回答 1

9

您必须记住,char它仍然是数字类型。

这里+是一元加号,它……什么都没有。+x具有与 相同的值x

然而 +x,在你的情况下是一段int时间。所以它在这种情况下的效果是调用它而不是有效地打印你的数值而不是它所代表的字符。xcharprintln(int)println(char)char

之所以+x是 an的原因int一元运算符 +执行所谓的一元数值提升,它将数值“规范化”为 , 和 类型,int并酌情进行。longfloatdouble

该行的更易于理解的版本是

System.out.println((int) character);

它的存在主要是因为语言关于一元减号 ( -x) 是对称的,它返回其操作数的否定值。

有关详细信息,请参阅此页面(在“一元运算符”下)。

于 2012-10-19T10:57:47.143 回答