今天在刷題時遇到的一個問題,對於初學者來說可能會產生疑惑,我們先來看一下代碼;
public class Example {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
public static void main(String args[]) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public static void change(String str, char ch[])
{
str = "test ok";
ch[0] = 'g';
}
}
輸出結果:
做完之後一直想不通爲什麼。在別人的幫助下知道答案。
以下爲分析:
賦值分爲直接賦值和以產生對象的方式賦值。上面代碼中good的方式就是創建對象賦值的方式,而test ok是直接賦值。這段代碼就相當於有兩個str對象,剛開始都指向good,在進入change()後,其中一個指向test ok;即一個指向good 一個執行test ok; 所以在最後輸出結果時輸出的依舊爲good
java是一門面向對象的語言。在多次實驗之後發現,創建的對象在其函數裏更新之後,是不變的。