直接上代码:public class Test {
public static void main(String[] args) {
String str = new String("test");
// String str = "test";
changeStr(str);
System.out.println(str);
}
public static void changeStr( String str ) {
str = "change";
}
}请问:为啥str的值没变? 不是作为了引用传递传入了changeStr方法里了么?
public static void main(String[] args) {
String str = new String("test");
// String str = "test";
changeStr(str);
System.out.println(str);
}
public static void changeStr( String str ) {
str = "change";
}
}请问:为啥str的值没变? 不是作为了引用传递传入了changeStr方法里了么?
解决方案 »
- 谁能告诉我它们到底有什么区别
- 一个怪怪的问题,为什么框架要实现事务机制?比如Spring
- 创建包的问题
- 非常困扰的问题
- 困惑!!!jdk1.5的bin目录下怎莫比1.4少好多程序(比如javac)!!急,在线等!!!!!!!!!!!!!
- 13711613(黑龙江程序员联盟)欢迎加入,这里高手如云
- 一个超级郁闷的问题,希望CSDN网友给解答一下,
- 有关String里把回车替换成\n的问题?
- 在JBuilder中如何设置自己的EntityBean的类名
- 介绍一下java发email的问题, mail API or sun.net.smtp.SmtpClient?
- java ssh连接远程linux主机的问题
- 求教完整多线程代码
所以改变 changeStr方法里的str 对main方法不起作用
除非你的str是一个静态变量 或者 changeStr返回值赋值给str
public static void main(String[] args) {
StringBuffer ss=new StringBuffer("test");
func(ss);
System.out.println(ss.toString());
}
private static void func(StringBuffer s){
s.delete(0,s.length()).append("newvalue");
}
}
public static void main(String[] args) {
String str2 = new String("test");
String str = "Mingming";
changeStr(str2);
System.out.println(str2);
changeStr(str);
System.out.println(str);
}
public static void changeStr( String str )
{
str = "change";
}
}
在参数传递的过程中,传的永远是值,这儿是地址不同,也就是不是同一个对象
public static void main(String[] args) {
String str = new String("test");
// String str = "test";
System.out.println("str="+changeStr(str));
}
public static String changeStr( String str ) {
str = "change";
return str;
}
}
群号:
247286682
来者请注明csdn.