【问题标题】:Why can I add characters to strings but not characters to characters?为什么我可以将字符添加到字符串但不能将字符添加到字符?
【发布时间】:2013-08-13 18:58:09
【问题描述】:

所以我想将一个字符添加到一个字符串中,并且在某些情况下想要将该字符加倍然后将其添加到一个字符串中(即先添加到它本身)。我试过了,如下所示。

char s = 'X'; 
String string = s + s;

这引发了一个错误,但我已经在字符串中添加了一个字符,所以我尝试了:

String string = "" + s + s;

哪个有效。为什么在总和中包含一个字符串会导致它起作用?是否添加了一个字符串属性,由于字符串的存在,该属性只能由字符转换为字符串时使用?

【问题讨论】:

  • 它抛出的错误可能是您问题的答案;)
  • 一个字符的长度只能是 1。Java 不“知道”你要将此表达式分配给一个字符串。
  • 类似问题 How to concatenate characters in java? 询问/回答如何从 >1 个字符构造字符串。这个问题询问/回答为什么尝试使用“+”运算符不成功;值得一问(因此撤回了重复的标志,并在此处添加了 +1 :)
  • 请澄清您问题的最后一句话 - 这是什么意思? @SahilMahajanMj 你知道吗?

标签: java string char add concat


【解决方案1】:

这是因为String + Char = String,类似于int + double = double。

尽管其他答案告诉你什么,Char + Char 是 int。

字符串 s = 1; // 由于类型不匹配导致的编译错误。

您的工作代码是 (String+Char)+Char。如果你这样做了: String+(Char+Char) 你会在你的字符串中得到一个数字。示例:

System.out.println("" + ('x' + 'x')); // prints 240
System.out.println(("" + 'x') + 'x'); // prints xx - this is the same as leaving out the ( ).

【讨论】:

  • 嗯,你的意思是 char 而不是 Char,但无论如何,关于整数的好线 :)
  • 我最初实际上是写了 char/Character,但后来我不想继续写,所以我删除并妥协了。 :) 你是对的。 Char 在 Java 中什么都不是。
  • 那么在这一点上,为什么要保留“Char”?为什么不使用 {char, Character, 'char/Character'} 之一?我不确定为什么保留“Char”是一个更好的折衷方案?我会自己编辑它,但要确保我没有遗漏任何东西......
【解决方案2】:

在 Java 中,char 是一个原始整数类型。因此,运算符 + 被定义为表示 addition 两个字符,结果为int。运算符表示仅在字符串上进行连接。所以一种方法是

"" + char1 + char2

这会将右侧操作数强制转换为字符串,这是您想要实现的。

附带一点:char 是 Java 中唯一的无符号原始数字类型,在我的一个项目中,我专门使用它。

【讨论】:

  • 感谢您提供“无符号原始数字类型”(强调“无符号”)旁注 - 我以前没有意识到这一点。
【解决方案3】:

char + char 返回一个int,所以编译器会报错String string = (int),这确实是错误的。

要连接字符,您可以在开头使用空字符串 (""),因此 + 运算符将用于 String 连接使用 StringBuilder 可以也可以附加字符。

char s = 'X';
String string = new StringBuilder().append(s).append(s).toString();

注意:char 变量是 s,而不是 X

【讨论】:

  • @Pshemo char+char=int.试试这个:char a = 'a', b = 'b', c; c = a + b;
  • +1 并添加一些信息:char1 + char2 的结果是int,这是char1char2UnicodeTable 中的位置总和。所以对于'X'+'X',结果将是88 + 88 = 176,如果OP想要转换为char,则为°
【解决方案4】:

当你这样做时 char s = 'X'; String string = X + X;

为什么不这样做呢? char s = 'X'; String string = s + s;

【讨论】:

  • 我认为 OP 在发帖时只是马虎:p
  • 我不是 java 专业人士——所以我认为他的解决方案可能就这么简单:p
【解决方案5】:

添加“”会将返回类型更改为字符串。忽略它意味着返回类型是一个不匹配的字符。

【讨论】:

    【解决方案6】:

    字符串字符串 = "" + X + X;

    是连接的一个示例。通过预先挂起空字符串,您可以指定结果应该是一个字符串。第一行代码告诉编译器您要添加 2 个字符(或整数),这应该生成一个整数,而不是字符串。

    【讨论】:

      【解决方案7】:
       String string = X + X;
      

      这里 X 作为变量受到威胁

      你应该使用一些东西作为

      String string ="x x";
      

      或者

      String x = "something";
      String y = "else";
      

      然后String string= x+y; 应该可以正常工作,这是因为您正在使用“+”号连接,您也可以使用

      string = string.concat(x+y); 
      

      string = string.concat("something"+"else");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 2010-12-11
        • 1970-01-01
        • 2021-12-12
        • 2022-08-18
        相关资源
        最近更新 更多