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” 展开
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” 展开
3个回答
展开全部
在调用test()时传递是的对象的引用而非对象的值,在方法中将'b'改成了'g',最后输出就是gcb而不是bcd了。
追问
按照你所说的那good也应该变为test啊,String类型 和数组类型不都是引用类型吗
追答
String s = new String(“good”);实际上创建了两个String对象,一个是”good”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在调用test()时传递是的对象的引用而非对象的值,在方法中将'b'改成了'g',最后输出就是gcb而不是bcd了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询