public class test4 {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
结果是1234,为什么不是welcome
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
结果是1234,为什么不是welcome
public static void changeStr(String str){
str="welcome";
}
后只是改变了它的形参的值,没有改变String str="1234";
解决方法如一楼
public static String changeStr(String str) {
return str = "welcome";
} public static void main(String[] args) {
String str = "1234";
changeStr(str);
System.out.println(str);
}}你的意思是这个结果是什么 ??????
public class test4 {
public static String changeStr(String str) {
return str = "welcome";
} public static void main(String[] args) {
String str = "1234";
str = changeStr(str);
System.out.println(str);
}
1楼的意思是这个
public class test4 {
public static String changeStr(String str) {
return str = "welcome";
} public static void main(String[] args) {
String str = "1234";
str=changeStr(str);
System.out.println(str);
} }
public static void changeStr(String a){
a="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
} changeStr(str)是先把str的值(也就是指向“1234”的指针)作一份拷贝,a="welcome"修改的是这份拷贝,根本没有改变str的值。
参看《CORE JAVA 2》第四章"Method Parameters"的内容吧,说明很详细。
public static String changeStr(String str) {
return str = "welcome";
} public static void main(String[] args) {
String str = "1234";
str=changeStr(str);
System.out.println(str);
} }
public static void changeStr(String str1){
str1="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
LZ 将自己程序改成这样,
首先在常量池开辟一空间,里面放上1234
调用changeStr()方法,在将1234传过去,
此时 再在栈区开避一另空间str1,str1的值为传过来的1234
经过str1="welcome"; 将str1改成"welcome"
但实际上str的值没有改 这是所谓的<传值调用>
str="welcome"; 是changeStr中的局部变量
两个相互不影响
java中没有不能传地址 只有值传递
str="welcome";
}
此方法中的str是一个局部变量 只是传值作用。
public class test4 {
public static String changeStr(String str){
str="welcome";
return str;
}
public static void main(String[] args) {
String str="1234";
str = changeStr(str);
System.out.println(str);
}
}
http://javadbserver.ucoz.com/
http://javadbserver.free.mingyao.net
把他声明称静态的全局变量呢 这样的话就是引用同一块地址空间了
我感觉也可以输出welcome
public class test4 {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
System.out.println(changeStr(str));
}
}
还是指向原来的 1234
public class test4 {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
其实函数 changeStr(str);
没有改变变量str的值呀