隐式类型转换不应该从 char 到 String。这怎么可能 ?
implicit type casting should not works from char to String. How is this possible ?
从 char 转换为 String 应该会导致以下错误:
此代码:
char [] arr = {'H', 'e', 'l', 'l', 'o'};
String c = arr[1];
Error :Type mismatch: cannot convert from char to String
此代码:
char [] arr = {'H', 'e', 'l', 'l', 'o'};
String c = "";
for(char i : arr) {
c += i;
}
Works.
+=
运算符与 +
运算符一样,当其中一个操作数是 String
而另一个不是时,将执行 string conversion。
带有 +=
的代码将使用字符串转换将 i
从 char
转换为 String
以连接到 c
,String
.
带有 =
的代码将不会使用字符串转换,因为根据 JLS, Section 5.2.
,它不在赋值上下文可接受的转换列表中
由于String
是不可变的,编译器实际上将+=
转换为
c = c + i;
编译为
c = new StringBuilder().append(c).append(i).toString();
和 StringBuilder 对所有原始类型都有 append
重载。
从 char 转换为 String 应该会导致以下错误: 此代码:
char [] arr = {'H', 'e', 'l', 'l', 'o'};
String c = arr[1];
Error :Type mismatch: cannot convert from char to String
此代码:
char [] arr = {'H', 'e', 'l', 'l', 'o'};
String c = "";
for(char i : arr) {
c += i;
}
Works.
+=
运算符与 +
运算符一样,当其中一个操作数是 String
而另一个不是时,将执行 string conversion。
带有 +=
的代码将使用字符串转换将 i
从 char
转换为 String
以连接到 c
,String
.
带有 =
的代码将不会使用字符串转换,因为根据 JLS, Section 5.2.
由于String
是不可变的,编译器实际上将+=
转换为
c = c + i;
编译为
c = new StringBuilder().append(c).append(i).toString();
和 StringBuilder 对所有原始类型都有 append
重载。