【问题标题】:implicit type casting should not works from char to String. How is this possible ?隐式类型转换不应该从 char 到 String。这怎么可能 ?
【发布时间】:2015-11-08 02:50:42
【问题描述】:

从 char 转换为 String 会导致以下错误: 这段代码:

char [] arr = {'H', 'e', 'l', 'l', 'o'};
        String c = arr[1]; 

错误:类型不匹配:无法从 char 转换为 String

这段代码:

char [] arr = {'H', 'e', 'l', 'l', 'o'};
String c = "";
for(char i : arr) {
    c += i;
}

工作。

【问题讨论】:

    标签: java string char type-conversion


    【解决方案1】:

    += 运算符与 + 运算符一样,将在其操作数之一为 String 而另一个不是时执行 string conversion

    带有+= 的代码将使用字符串转换将ichar 转换为String,以便连接到cString

    = 的代码不会使用字符串转换,因为根据JLS, Section 5.2,它不在赋值上下文的可接受转换列表中。

    【讨论】:

      【解决方案2】:

      由于String 是不可变的,编译器实际上将+= 转换为

      c = c + i;
      

      编译成

      c = new StringBuilder().append(c).append(i).toString();
      

      StringBuilder 具有所有原始类型的append 重载。

      【讨论】:

        猜你喜欢
        • 2013-06-12
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 2010-10-04
        • 2015-08-07
        • 1970-01-01
        • 2013-02-20
        相关资源
        最近更新 更多