創建實例的方式聲明字符串,會在新建一個實例進行賦值,數組或者直接賦值字符串,則會修改內存中原有的對象

指出下列程序運行的結果 ()

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項。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章