java 小程序5、6行 答案 求详解(内存中的存储过程,直接在后面注释就行)

publicclassTest{publicstaticvoidmain(Stringargs[]){Stringstr=newString("World");charc... public class Test { public static void main(String args[]) {

String str = new String("World");
char ch[] = { 'H', 'e', 'l', 'l', 'o' };
change(str, ch);
System.out.println(str + "and"); System.out.println(ch);
}

public static void change(String str, char ch[]) {
str = "Changed";
ch[0] = 'C';
}
}
展开
 我来答
shiguang077
推荐于2016-11-05 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:48.3万
展开全部
我给你解答一下,你想问的是不是为什么结果不是Changed而是World?首先,关于ch的输出,最终结果肯定是Cello,这个我想你应该是没有问题的,这个是基本的数组传递用法,这儿就不做解释了。其次,解释一下为什么是World而不是Changed。其实这儿我非常建议你去看一看马士兵老师的JAVA视频,他在视频中关于对象引用讲得非常细,或者读一读《疯狂JAVA讲义》一书的相关章节,也说明得很细的。String str = new String("World"); 这儿str是个对象引用,它指向World,就是说,str这个变量中存储的是一个地址,是谁的地址呢?就是World字符串的地址,这儿str相当于C语言中的指针。change(str, ch); 这儿是对原来的str进行一个复制传递,即将str的替身传给了change函数,这个替身它有自己的地址(但这个地址和str本身的地址是不相同的),它存储的也是一个地址,也是World字符串的地址。接下来,对change函数所做的操作,即让str的替身指向了另一个字符串,即str的替身存储的内容为“Changed"字符串的地址,这个显然和str本身是没有关系的,所以,最终还是World
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
挨踢man
2014-09-01 · 超过27用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:50万
展开全部
public class Test { public static void main(String args[]) {

String str = new String("World");
char ch[] = { 'H', 'e', 'l', 'l', 'o' };
change(str, ch);
System.out.println(str + "and"); System.out.println(ch);
}

public static void change(String strParam, char ch[]) { //str是传值,ch是传引用
strParam = "Changed";
//这里为了描述方便,把形参str改名成strParam,效果是一样的。注意,String传参的时候是传值,这个和int、char基本类型的传参形式是一样的。形参strParam和实参str是两个不同的引用,一开始它们都是指向"World"这块内存,后来,形参str="Change"以后,形参str被指向了另外一块内存"Change",而实参还是指向了“World”。所以实参str的值是没改变的
ch[0] = 'C';
//这里传参的时候,因为数组是传引用的,所有这里是把实参ch的内存地址传过来了,形参ch和实参ch都是指向了数组{ 'H', 'e', 'l', 'l', 'o' }的开头,指向的是同一个内存块,所以,其中一个改变值也就是改了同个内存块的值。

输出是:
Worldand
Cello

普及一下知识:
按值传参的有——String、int、char、double、float等基本类型以及其包装类
按引用传参的——除了以上那些的对象都是,如数组、字典、任何对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凌晨六点整
2014-09-01 · TA获得超过140个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:149万
展开全部
Worldand

char[
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式