java的一个程序 谁帮我看下谢谢!
publicclassExample{Stringstr=newString("good");char[]ch={'a','b','c'};publicstaticvoi...
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.println(ex.ch);
}
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}
}
本人新手 为什么答案是 good and gbc
而不是 test ok and gbc 求解~ 展开
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.println(ex.ch);
}
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}
}
本人新手 为什么答案是 good and gbc
而不是 test ok and gbc 求解~ 展开
5个回答
展开全部
这里的 str = "test ok" 是值传递 只在这个方法中生效 对实际值无影响
ch[0] = 'g';这里是直接替换掉了ch[0] 引用地址
具体可以看看这个下面的
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
ch[0] = 'g';这里是直接替换掉了ch[0] 引用地址
具体可以看看这个下面的
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这就要理解java变量存储机制,你change方法传的是形参,str=“test ok”只在change方法有效,传过去的只是变量的引用,修改引用的值无法修改变量本身,而为什么char[]类型的变量会修改成功,是因为数组传值的方式的以地址的方式传过去的,他会根据地址找到内存中对应的变量,再修改变量的值。而形参不会。所以形参不能真正意义上改变变量的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是变量的传值,在函数内部是你赋的值,出了函数,还是你刚开始定义的变量的值。建议你看下传值和传地址的区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为ex实例化的是example
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询