java 值传递和引用传值 的问题 下面的问题我想知道为什么最后ss不是{"11","22"}

[code="java"]public static String [] change(String[] ss){
ss[0]= "a";
String[] str = new String[]{"11","22"};
ss = str;
System.out.println("ss="+ss);
System.out.println("str="+str);
return ss;
}

     public static void main(String[] args) {
      String[] ss = new String[]{"1","2"};
      String [] sss = change(ss);
      System.out.println("ss="+ss);
      System.out.println("sss="+sss);
      System.out.println(ss[0]+","+ss[1] );
      System.out.println(sss[0]+","+sss[1] );
      System.out.println(ss == sss);
      System.out.println(ss [0]);
     } [/code]

java 只有值传递 没有址传递!
对象应用可以传递!并且可以改变里面的属性!

[img]http://dl.iteye.com/upload/picture/pic/73244/2870a6f3-c2c9-3785-8555-d7eda02c1049.jpg[/img]

画了一个图,居然太大了。不方便浏览,看[url]http://dl.iteye.com/upload/picture/pic/73244/2870a6f3-c2c9-3785-8555-d7eda02c1049.jpg[/url] 这个链接吧。

大致说一下,关键有两点,第一产生了两个对象,第二传替的是引用。

程序说明:
1,产生对象“Object1”,保存结果为“1”“2”。
2,main:ss的引用指向这个对象。
3,调用change函数,change:ss的引用和main:ss的引用同指向对象“Object1”。
4,在change函数,对象“Object1”被改为:“a”和“2”。
5,产生对象“Object2”,保存结果为“11”“22”。
6,change:str和change:ss还有main:sss引用 对象“Object2”。