public class Test1 {
public static void changeStr(String str){
str="welcome";
System.out.println(str);
} public static void main(String[] args){
String str="1234";
changeStr(str);
System.out.println(str);
}
}两次输出分别是什么??Why?
public static void changeStr(String str){
str="welcome";
System.out.println(str);
} public static void main(String[] args){
String str="1234";
changeStr(str);
System.out.println(str);
}
}两次输出分别是什么??Why?
1234str引用传递进去,调用方法结束后并没有原来的指向(str是指向"1234"的)
http://topic.csdn.net/u/20090523/21/c6c9028b-04de-4aef-8b9e-f63e8eb29864.html
1234String object 不能被改变
1234
传进去的只是str的一个拷贝应用,所以并没有改变原来的str的指向地址!
1234
传进去的只是str的一个拷贝应用,所以并没有改变原来的str的指向地址!
1234java中方法的参数都是进行的值传递,而不是传引用
1234
很简单的题目啊
welcome
1234
console:
welcome
1234
是这样吗??
太棒了,yeah~~
1234
传进去的只是str的一个拷贝应用,所以并没有改变原来的str的指向地址!
1234
值传递和引用传递。
值传递时复制一个拷贝,而引用传递时指向同一个内存地址
* @param args
*/
public static void main(String[] args) {
StringBuilder str = new StringBuilder("1234");
System.out.println(str);
changeStr(str);
System.out.println(str); } public static void changeStr(StringBuilder str) {
str.append("welcome");
System.out.println(str);
}
看了这个结果如果不会糊涂,就说明理解了函数调用的实质。
1234
test类并没有得到str这个参数
1234如果是StringBuffer的话就是以下了
welcome
welcome
看文档,对String的说明——“Strings are constant; their values cannot be changed after they are created.”
执行str="welcome",不是改变str指向的内存的数据,而是把str指向了另一个位置。当然,只是把changeStr的str指向了另一个位置,而main的str还是指着原来的地方。
所以最后的输出是:
welcome
1234