为什么我不能将字符添加到新字符串中?
why can't I add chars to a new string?
代码:
String st = "abc";
String sl = st.charAt(0)+st.charAt(st.length()-1));
第二行不知为何写错了
书不对,Eclipse对
在 Java 中,您可以编写 "abc" + whatever
或 whatever + "abc"
,它会连接字符串——因为一侧是 String
.
但在st.charAt(0)+st.charAt(st.length()-1))
中,两边都不是String
。他们都是 char
。所以 Java 不会给你 String
回报。
相反,Java 实际上在技术上会给你一个 int
。以下是 Java 语言规范中的详细信息,它准确描述了 Java 的工作原理:
- JLS 4.2 指定
char
被视为 数字类型。
- JLS 15.18.2 指定
+
对数字类型值的作用。
- 特别是,它指定对它们做的第一件事是二进制数字提升,它将两个
char
都转换为 int
JLS 5.6.2。然后它添加它们,结果仍然是 int
.
要实现您想要的结果,可能最简单的解决方案是编写
String sl = st.charAt(0) + "" + st.charAt(st.length() - 1));
因为 charAt returns char [ int ]
使用此代码:
String st = "abc";
StringBuilder str = new StringBuilder();
str.append(st.charAt(0));
str.append(st.charAt(st.length() - 1));
System.out.println(str.toString());
append 方法接受字符或字符串,..
well this is what it says: "- Type mismatch: cannot convert from int to String"
这正是@Jaime 所说的意思。如果我没记错的话,char 在技术上由整数值表示。 (即 'a' + 1 = 'b')。因此,您要添加两个 char 值,这与将两个字符串添加在一起甚至连接两个 char 值都不同。一种解决方法是使用 String.valueOf(st.charAt(0)) + String.valueOf(st.charAt(st.length()-1)))
连接两个 char 值。
代码:
String st = "abc";
String sl = st.charAt(0)+st.charAt(st.length()-1));
第二行不知为何写错了
书不对,Eclipse对
在 Java 中,您可以编写 "abc" + whatever
或 whatever + "abc"
,它会连接字符串——因为一侧是 String
.
但在st.charAt(0)+st.charAt(st.length()-1))
中,两边都不是String
。他们都是 char
。所以 Java 不会给你 String
回报。
相反,Java 实际上在技术上会给你一个 int
。以下是 Java 语言规范中的详细信息,它准确描述了 Java 的工作原理:
- JLS 4.2 指定
char
被视为 数字类型。 - JLS 15.18.2 指定
+
对数字类型值的作用。 - 特别是,它指定对它们做的第一件事是二进制数字提升,它将两个
char
都转换为int
JLS 5.6.2。然后它添加它们,结果仍然是int
.
要实现您想要的结果,可能最简单的解决方案是编写
String sl = st.charAt(0) + "" + st.charAt(st.length() - 1));
因为 charAt returns char [ int ]
使用此代码:
String st = "abc";
StringBuilder str = new StringBuilder();
str.append(st.charAt(0));
str.append(st.charAt(st.length() - 1));
System.out.println(str.toString());
append 方法接受字符或字符串,..
well this is what it says: "- Type mismatch: cannot convert from int to String"
这正是@Jaime 所说的意思。如果我没记错的话,char 在技术上由整数值表示。 (即 'a' + 1 = 'b')。因此,您要添加两个 char 值,这与将两个字符串添加在一起甚至连接两个 char 值都不同。一种解决方法是使用 String.valueOf(st.charAt(0)) + String.valueOf(st.charAt(st.length()-1)))
连接两个 char 值。