一个基础的JAVA问题,关于传值和传引用

huyanqieyu 2008-03-21 03:48:27
public class ww
{
public static void main(String[] args)
{
String s1="111";
String s2="222";
w(s1,s2);
System.out.println(s1+" "+s2);


}

public static void w(String a,String b)
{
String c;
c=a;
a=b;
b=c;

}
}


这个程序中是不是调用函数w的时候,只是把s1和s2保存的地址拷贝传给a和b,然后a和b交换,而s1和s2保存的还是原来保存的地址,没有交换,是这样理解吗??如果要用一个函数让s1和s2保存的地址交换应该怎么做??
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
网络咖啡 2008-03-21
  • 打赏
  • 举报
回复
看看我的BLOG上写的参数传递的文章:
http://blog.csdn.net/mailbomb
ChangXiangzhong 2008-03-21
  • 打赏
  • 举报
回复
首先要搞清楚:堆和栈的区别。
所有的引用和primitive 类型都在栈中。
随着函数的结束从从栈中弹出,销毁
而堆是所有对象所处的位置。
由gc销毁
Gump09 2008-03-21
  • 打赏
  • 举报
回复
一个字符串会有一个独立地址,所有具有相同值得字符串变量都会指向这个地址
Gump09 2008-03-21
  • 打赏
  • 举报
回复
如果要用一个函数让s1和s2保存的地址交换应该怎么做??
-----------------------------------------
一定程度上讲,
s1="222";
s2="111";
地址不就交换了吗
Squall1009 2008-03-21
  • 打赏
  • 举报
回复
这个程序中是不是调用函数w的时候,只是把s1和s2保存的地址拷贝传给a和b,然后a和b交换,而s1和s2保存的还是原来保存的地址,没有交换,是这样理解吗??
是的
如果要用一个函数让s1和s2保存的地址交换应该怎么做??
没有办法

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧