【发布时间】:2016-01-28 01:22:21
【问题描述】:
这是我的代码
public static String change(String word, char gone, char here) {
char[] chars = word.toCharArray();
for (char c : chars) {
if (c == gone) {
c = here;
}
}
return new String(chars);
}
我是这样称呼它的:
System.out.println(change("supper", 'p', 'o'));
结果是 supper 我试图解释发生了什么......
chars 变量是一个引用数组对象的变量,其中包含字符串对象word 的字符。那么我想到的唯一解释是,在for语句中,java实际上复制了chars数组。对吗?
有些用户说我的代码中有警告,
但你去吧,没有警告
【问题讨论】:
-
你用什么编辑器,你需要让它为你格式化你的代码。
-
@weston 抱歉,现在我没有编辑器,正在使用终端:(
-
@weston 请不要介意,代码现在已格式化
-
这很重要。 IDE 为您做的不仅仅是格式化您的代码。
-
使用
chars[i] = here代替局部变量c应该没问题;尽量避免在这个简单的循环中使用迭代器,因为在迭代时更改值会抛出ConcurrentModificationException@Pankaj-saboo 为您提供了答案。
标签: java arrays string for-loop