public class Sub{
String str=new String("good");
char ch[]={'a','b','c'};
public static void main(String args[]){
Sub ex=new Sub();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+" and "+ex.ch[0] +ex.ch[1] +ex.ch[2]);
}
public void change(String str,char ch[]){
str="test ok";ch[0]='g';
}
}
请问为什么得到的结果是:good and gbc
而不是good and abc
String str=new String("good");
char ch[]={'a','b','c'};
public static void main(String args[]){
Sub ex=new Sub();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+" and "+ex.ch[0] +ex.ch[1] +ex.ch[2]);
}
public void change(String str,char ch[]){
str="test ok";ch[0]='g';
}
}
请问为什么得到的结果是:good and gbc
而不是good and abc
str="test ok";
ch[0]= 'g ';
}
这个方法执行后 Str并没有改变 方法里面的Str和外面的是两个概念
而ch[0]的确把char ch[]={ 'a ', 'b ', 'c '}; 的第一个元素改变了
---
你把数组内容改了,当然是gbc了。
2.String str=new String("good")中的str是包装类
和public void change(String str,char ch[]){
str="test ok";
ch[0]= 'g ';
} 中的str不一样,所以没有改变
而ch[0]所在的地址存储的就是'a',它是一个字符变量。
将String str=new String("good"); 改为String str=good";就会得到您想要的结果。
String str=new String("good");
char ch[]={ 'a', 'b', 'c'};
public static void main(String args[]){
hh ex=new hh();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+" and "+ex.ch[0] +ex.ch[1] +ex.ch[2]);
}
public void change(String str,char ch[]){
str="test ok";
this.str=str;
ch[0]= 'g';
}
}
这样就可以修改Str的值了
aaa= "test ok ";
this.str=aaa;
}
一个是值String str=new String( "good "); 一个是对象引用 根本定义就不同啊 这样写 容易迷糊 .