java 程序题的解释

publicclasst6{Stringstr=newString("good");char[]ch={'a','b','c'};publicstaticvoidmain... public class t6{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
t6 ex=new t6();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+"and");
System.out.print(ex.ch);}
public void change(String str,char chp[]){
str="test ok";
ch[0]='g';}
}
输入的结果为goodandgbc
请各位帮忙详细解释此代码,尤其是从main方法以后,我就看不懂了哦。。
麻烦各位了
chp[]打错了
是ch[]
展开
 我来答
百度网友d2bb601
2012-05-25 · TA获得超过569个赞
知道小有建树答主
回答量:851
采纳率:66%
帮助的人:417万
展开全部
java 程序题的解释
19 分钟前
提问者: a8507024 | 悬赏分:10 | 浏览次数:16次

public class t6{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
t6 ex=new t6();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+"and");
System.out.print(ex.ch);}
public void change(String str,char chp[]){//这方法没直到你想要的作用
str="test ok";// 这是局部变量str,再怎么改也不影响成员变量那个str
ch[0]='g';}// ch是成员变量里的成员变量改了你上边输出当然也改了,
//如果 这改成chp的话连那个'g'都不能改变。。
//局部变量和成员变量同名时局部的将覆盖成员的。
//局部变量再怎么改不影响成员变量
}
追问
你好,
请问这句话什么意思
如果 这改成chp的话连那个'g'都不能改变。。
不懂啊。。
不好意思
这里没有chp我打错了,应该是这样的 public void change(String str,char ch[])
追答
把ex.str传给方法中的str,,
方法中的str现在="good",ex.str还是"good"
又把方法中的str变成"test ok",,ex.str不还是"good"
只是复制了ex.str中的值给str..
一份文件你拷贝一份给人家,人家把拷贝的那份改了,你的那份不还是原来的文件么,别人没接触到你的文件。
char chp[] ex.ch传给chp时不把ch[0]这个地址传过来了么
方法中chp就指向ch的地址
一份文件你不是拷贝另一份给人家,而是把文件放的地方告诉人家,别人一修改不就直接修改了你原来的那份文件了么改成char chp 不和string str一样了么。。。
zmp800
2012-05-25 · TA获得超过155个赞
知道答主
回答量:92
采纳率:0%
帮助的人:82万
展开全部
public static void main(String args[]){
t6 ex=new t6();//产生类实例
ex.change(ex.str,ex.ch);//调用change方法
System.out.print(ex.str+"and");//打印str值连接and字符
System.out.print(ex.ch);}//打印ch字符
public void change(String str,char chp[]){
str="test ok";
ch[0]='g';}
}//该方法是关键。该方法接受形参str,并把str赋值给类成员变量str,在方法内类成员变量str变为“test ok” ,但是随着方法结束,str就会恢复初始状态,还会变回“good”;下一句好理解,就是修改字符数组第一个元素的值:把a改成了g。所以最后结果为goodandgbc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Coolerlxl
2012-05-25 · TA获得超过640个赞
知道小有建树答主
回答量:431
采纳率:0%
帮助的人:354万
展开全部
public void change(String str,char chp[]) 前一个参数是值传递,后面的数组是地址传递。所以ch数组的第一个元素被替换了,二str字符串没有变化,所以输出结果就是goodandgbc了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xie05254111
2012-05-25 · TA获得超过699个赞
知道答主
回答量:74
采纳率:0%
帮助的人:43万
展开全部
main方法之后就是定义t6类的一个对象ex
再调用类中的change方法,其实这个方法就是把数组中第一个字符改为g就是了!
最后在输出就是了!由于char是八种基本数据类型,是值传递,而string是引用传递,所以str的至不会变,而ch数组中的值会改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-05-29 · TA获得超过100个赞
知道答主
回答量:146
采纳率:0%
帮助的人:63万
展开全部
请教编程的老师吧,
同学您热爱学习,另人敬佩.
或者买本编程的书.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式