String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Test ex=new Test();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}为什么str没变?
char[]ch={'a','b','c'};
public static void main(String args[]){
Test ex=new Test();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}为什么str没变?
解决方案 »
- scjp的一个问题,关于hasCode,高手进!!!
- java命令问题
- 怎样使jComboBox不可用,但内容不变灰
- 我的组播程序如果设置了setLoopbackMode(true)为什么就收不到消息了?
- 访问控制性问题?
- 简单问题:大家看看这段代码问题在哪?(接受键盘输入的)
- 帮我看看程序错误
- 有《Core Java》或是《Java核心技术卷1》电子版下载吗??
- 什么是 Integration Build 什么是 Stream Nightly Builds
- 初学java,请问为什么不能看网页中的applet?
- 菜鸟提问:如何用数组实现任意输入N个数求起平均值??
- 求助,包含ImageIO类的方法不能运行?
而且你再change方法中只改变了引用,是不能改变实参的值的;
建议楼主用StringBuffer来代替楼主的String类型;这样楼主能比较清晰的明白java中的参数是值传递的
ch[0]='g'
改为
ch = new char[]{'I','B','M'};
外面的ch同样不会改变
如果定义为final 构建对象时必须初始化它,并且在后面的操作中,不能够对它进行更改!
而String是定义为final的.
所以str就不能更改了.
String str="abc";
str.concat("edf");
str的值还是abc!
我觉得这跟String 是final无关,关键是参数传递的问题