java值传递与引用传递

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论


  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的时候,它的值并没有被修改!

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答