代碼爲什麼函數修改array [0]而不是Java中的字符串?
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
保持同爲 「主」,但array[0]
值會從「主要修改「調用函數後調用」foo「?效果不應該一樣嗎?
的字符串文字不能用你的方法來改變,因爲它是按值傳遞作爲一個字符串,但數組可以作爲傳遞該陣列的價值是它的參考,所以您可以通過參考影響其內容。 – ManoDestra
Java中的字符串必須是不可變的 – peter
您不能修改字符串,因爲它是不可變的對象。建議您使用StringBuffer –