Java中数组对象在内存的变化

packagecom.lzx.test;publicclassTest{Strings=newString("good");char[]h=newchar[]{'b','... package com.lzx.test;
public class Test {

String s=new String("good");
char[] h=new char[]{'b','c','d'};
public static void main(String[] args) {
Test t=new Test();
t.test(t.s,t.h);
System.out.println(t.s+" and ");
System.out.println(t.h);
}
public void test(String s ,char[]h){
s="test";
h[0]='g';
}
}
求解程序的运行结果为何为“good and gcd”而不是“good and bcd”
展开
 我来答
QQMSD8
推荐于2017-11-20 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
是的, java中对象是引用传递, 而8大基础数据类型是值传递, test方法中传递的数组, 其实是对象来的, 所以是引用
HN_WindStorm
2015-06-05 · 超过17用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:34.3万
展开全部
在调用test()时传递是的对象的引用而非对象的值,在方法中将'b'改成了'g',最后输出就是gcb而不是bcd了。
追问
按照你所说的那good也应该变为test啊,String类型 和数组类型不都是引用类型吗
追答
String s = new String(“good”);实际上创建了两个String对象,一个是”good”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惬意又清冽的松柏8224
2017-11-19 · TA获得超过522个赞
知道小有建树答主
回答量:781
采纳率:90%
帮助的人:525万
展开全部
在调用test()时传递是的对象的引用而非对象的值,在方法中将'b'改成了'g',最后输出就是gcb而不是bcd了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式