public class test {
public static void changestr(String str){
str="welcome";
}
public static void main(String[] args){
String str="1234";
changestr(str);
System.out.println(str);
}
}
结果怎么是1234?
我是新手,我就想问问,我用了changestr函数了,我不是把str的引用指向了welcome了吗?为什么输出还是1234
你这样去想
String str="1234";//这是main方法里的
然后是调用函数
String str=str;//右边的就是上边的str,把实参传给形参
左边就是那个参数里的str
然后你在函数里
str="welcome";
并没有改变外边的str啊.你只是改变了里边 的str;
假设那个方法是一个过程,这个过程呢提供一个篮子(参数),用来放苹果(String)的,当然它是空的,实际工作的时候,你需要给它苹果.给它苹果的时候它就把你所给的苹果放在那个篮子里,给了它之后,它可以把篮子里的苹果都吃了.然后再拿去装别的苹果.
你在给苹果的时候也要用一个篮子装着吧.你给的时候只是把苹果给它,它用别的篮子去装(参数).
public static String changestr(String str){
str="welcome";
return str;
}
public static void main(String[] args){
String str="1234";
System.out.println(changestr(str));
}
}
这样就是welcome了,仔细体会两者的区别吧
我就是和下面这个程序有点搞混了!
public class test {
public static void main(String[] args){
String s="java";
s="HTML";
System.out.println(s);
}
}
我是知道"java"对象是还在,可是s的引用变了指向了"HTML"对象,所以输出的值是HTML。
changestr(str); 不是创建"welcome"对象,并把其引用赋给str?
如果不是,那怎么理解上面输出的是HTML呢?