```public class Sssa {
String str=new String("good");
char[ ] ch={'a' , 'b' , 'c'};
public void change(String str,char[ ] ch){
str="test ok";
ch[0]='g';
}
public static void main(String args[]){
Sssa ex=new Sssa();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.println(ex.ch );
}
} 结果:good and gbc
![](https://profile-avatar.csdnimg.cn/26aafa1645924c5485b2b34d3c117a03_qq_52378315.jpg!4)
刚学 请问结果为什么不是test and gbc呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 404警告 2021-07-01 08:44关注
输出的那一句话 ex.str 输出的good因为是取得Sssa类中的变量 而你首先调用方法的虽说给str重新赋值 但是因为string是不可变的这样只不过是给他一个新的引用地址, 但他没有修改外部定义的str的值 除非在方法内使用this.str 改变外部str指向的值 也就是改变他的引用地址就会输出test ok and gbc, abc变gbc因为字符是可变的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用