黑马程序员技术交流社区
标题:
求解答详细的
[打印本页]
作者:
圣手书生
时间:
2018-4-23 22:02
标题:
求解答详细的
String str = new String("good");
char[] ch = {'a','b','c'};
public static void main(String[] args) {
Test te = new Test();
te.change(te.str,te.ch);
System.out.println(te.str + "and");
System.out.println(te.ch);
}
public static void change(String str, char ch[]){
str = "test ok";
ch[0] = 'g';
}
为什么数组下标0的数据会被更改
作者:
hmhm123
时间:
2018-4-24 08:35
因为你的str这个变量最后是一个字符串常量;
你的ch,是一个数组,也就是引用数据类型的一个变量;
ch只是存放在栈里的一个变量名,而它的元素都是存放在堆中的;
所以当你的ch字符数组传入到方法中,在方法里修改0角标里的元素,
实际上是通过ch所指向的地址值,去堆里修改元素了,所以最后会发生变化。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2