【发布时间】:2016-06-10 16:45:54
【问题描述】:
代码
public class Foo {
public static void main(String[] args) {
//declaring and initializing String variable 'str' with value "outside"
String str = "main";
//declaring and initializing Array 'array' with values
String [] array = {"main"};
//printing values of str and array[0]
System.out.println("str : " + str + " , array[0] : " + array[0]);
//calling function foo()
foo(str, array);
//printing values after calling function foo()
System.out.println("str : " + str + " , array[0] : " + array[0]);
}
static void foo(String str, String[] array){
str = "foo";
array[0] = "foo";
}
}
输出
str : main , array[0] : main
str : main , array[0] : foo
问题
为什么字符串str 仍然和“main”一样,但是array[0] 的值在调用函数foo() 后从“main”修改为“foo”?效果不应该一样吗?
【问题讨论】:
-
您的方法不能更改字符串文字,因为它作为字符串文字按值传递,但数组可以作为为该数组传递的值是它的引用,因此您可以通过以下方式影响其内容它的参考。
-
Java 中的字符串必须是不可变的
-
你不能修改一个字符串,因为它是一个不可变的对象。建议您使用 StringBuffer
标签: java arrays string methods