指出下列程序运行的结果 ()
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项。