java值传递与引用传递
来源:优易学  2011-9-17 9:42:24   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  public static void changeObject(Yinyong obj)
  {
  obj.age = 34234;
  }
  }
  class Yinyong
  {
  int age = 22;
  }
  声明了个简单的类Yinyong,当把Yinyong的对象y传递给函数changeObject后,看下前后结果:
  22
  34234
  值被改变了,这就是引用调用。
  下面再看看传递String对象会发生什么结果?
  class Str
  {
  public static void main(String[] args)
  {
  String s = "java test";
  System.out.println(s);
  changeString(s);
  System.out.println(s);
  }
  public static void changeString(String str)
  {
  str = "3gg over right";
  }
  }
  看看结果吧:
  java test
  java test
  你惊奇的发现s的值并没有改变!你会问了,String不也是引用类型的吗?怎么它的值没有改变呢?
  因为是这样的:
  String被设计为不可修改的类型,也就是对String对象的任何修改都将重新创建一个对象而放弃以前的内存空间的引用!
  如上例:
  比如 s指向0x2344, 当它赋值给str时str也同样指向了0x2344.而当 执行str="3gg over right"后,str指向了别的地方。也许是
  0x2222或者其他,反正不是0x2344了。所以当你输出s的时候,它的值并没有被修改!

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训