JAVA 指出下列程序运行的结果( B )

public class Example{

String str=new String(〃good〃); str=good
char〔〕ch={′a′,′b′,′c′}; ch = a b c

public static void main(String args〔〕){
Example ex=new Example(); Example ex;

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,使用exchange方法并没有改变这个str属性的值,因为String类型的值是固定不变,不可更改的(immutable),所谓改变和赋值只是重新创造一个新对象对它进行赋值。
在String类中,不可更新的意思是,只要生成了一个String实例,那么,它里面的内容是不能被更改的,虽然String有很多的方法,但是没有一个方法可以用来改变它的内容。
如果想要更改的话,必须是StringBuffer类的对象才行。
而char则是可变的,所以会被exchange改变
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-24
你好,第一题:1
4
9
16
25
36
49
64
81
100
total is385(你是程序中最后一句改成)system.out.println("total is" +total);
第二题:if(sex=1)改成if(sex==1) 还有2%3=2,所以一直打印出Woman
第三题:str重复申明。还有不知道say哪来的
第四题:case后只能跟int和char类型
第五题:把里面的System写正确了,然后你的这个程序是死循环,当i=5的时候,就进入到 if语句里去,i--,而for循环里i++,所以相当于i没有操作,而i=5一直满足循环条件,所以就是死循环
第六题:for循环里改成y!=1.2
第七题:这个就更简单了,能同时被2,5,7整除,就是能被这三个数的最小公倍数整除就可以了,也就是被70整除就可以了 25942希望对你有帮助!

参考资料:. wjhmkis

第2个回答  2008-10-24
送你一句话: 引用不可以改变,但是引用的对象的值可以改变。。。

我跑了 结果是b.本回答被提问者采纳
第3个回答  2008-10-24
d
第4个回答  2008-10-24
选 D