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 求解~
展开
 我来答
神机天下
2013-05-22 · TA获得超过175个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:182万
展开全部
你这个你要了解java的参数传递规则.
基本数据 和sTring 你可以直接认为他们就是值传递
所以 你那个change() 不会改变String的内容的.对于复杂的数据类型,
java你可以认为是传引用..所以会改变ch内容..
所以输出结果为 good and gbc
虽然理论上java不是值传递,但是那个传递很复杂.
你只要记住我给你说的两种情况,一般情况下都是正确的
zyyjjww
2013-05-22 · TA获得超过146个赞
知道答主
回答量:104
采纳率:0%
帮助的人:39.9万
展开全部
这里的 str = "test ok" 是值传递 只在这个方法中生效 对实际值无影响

ch[0] = 'g';这里是直接替换掉了ch[0] 引用地址

具体可以看看这个下面的

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希尼卡米
2013-05-22 · TA获得超过170个赞
知道答主
回答量:123
采纳率:0%
帮助的人:78.6万
展开全部
这就要理解java变量存储机制,你change方法传的是形参,str=“test ok”只在change方法有效,传过去的只是变量的引用,修改引用的值无法修改变量本身,而为什么char[]类型的变量会修改成功,是因为数组传值的方式的以地址的方式传过去的,他会根据地址找到内存中对应的变量,再修改变量的值。而形参不会。所以形参不能真正意义上改变变量的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
棒迷幸1i
2013-05-22 · 超过25用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:71.2万
展开全部
这个是变量的传值,在函数内部是你赋的值,出了函数,还是你刚开始定义的变量的值。建议你看下传值和传地址的区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
半醉丶半迷人
2013-05-22 · TA获得超过233个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:47万
展开全部
因为ex实例化的是example
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式