java吧 关注:1,246,677贴子:12,723,525
  • 8回复贴,共1

java中数组作为参数的时候是传递地址的呀

只看楼主收藏回复

为什么同为传递地址的String 中内容改变就会产生一个新的对象 而数组就可以直接修改呢
就是这个代码String类型的为什么不能换位呢 换成数组的话就可以
class Demo
{
public static void main(String[] args)
{
//int arr[]={2,8,3,4,5,72,31};
String c=new String("c");
String d=new String("d");
//IntArrayTool a=new IntArrayTool();
Demo a=new Demo();
a.saawp(c,d);
System.out.println(c+" "+d);
}
public void saawp( String c,String d)//换位
{
String temp = c;
c=d;
d= temp;
}
}


IP属地:浙江1楼2017-05-18 16:53回复
    谁告诉你String是传递地址的?


    IP属地:广东2楼2017-05-18 17:30
    收起回复
      无语。。。你都不知道方法里面发生了什么事,改换个屁位。需要我来解析一下给你听吗


      IP属地:北京来自Android客户端3楼2017-05-19 21:09
      回复
        你搜下 java值传递
        首先要说明的是java中是没有指针的,java中只存在值传递,只存在值传递!!! 然而我们经常看到对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。

        String的常量池是个非常奇葩的东西,这个跟绝大部分都不一样,常量池你当作特例吧
        重点:首先要说明的是java中是没有指针的,java中只存在值传递,只存在值传递!!!
        贴不了网址,你自己搜吧,搜了那个关键字,博客就在前几个


        4楼2017-05-19 21:23
        收起回复
          你去查查java内存存储机制


          IP属地:北京来自Android客户端5楼2017-05-19 21:58
          回复