指出下列程序運行的結果 ()
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 void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}
}
A、 good and abc
B、 good and gbc
C、 test ok and abc
D、 test ok and gbc
解析: B
1、常量str 與 ch 分別使用創建實例方式和數組方式聲明字符串。
兩者區別:創建實例的方式聲明字符串,會在內存中新建一個實例進行賦值。數組或者直接賦值字符串,則會修改內存中原有的對象。
如下僞代碼所示:
string a=“abc” , b=“abc” ;
在比較字符串 a、 b 時,a 等於 b 。
而 string a=new string(“abc”);
string b=new string(“abc”) ;
再比較字符串 a 和 b, 則 a 不等於 b 。
2、再是change 方法沒有返回值,是void修飾。所以對 ch 的修改影響到了全局變量 ch,對str 的修改僅僅是修改了chenge方法中創建的 str 同名的局部變量。
最後 輸出 爲 答案 B項。