当前位置:  技术问答>java相关

关于拷贝还是引用的概念题。

    来源: 互联网  发布时间:2015-07-20

    本文导语:  package Mytest; import java.io.*; public class ALGore {    public static void recount(StringBuffer s3, StringBuffer s4)     {      s4.append("more");      s3=s4;     }    public static void main(String[] args)     {      StringBuffer s1...

package Mytest;
import java.io.*;
public class ALGore
{
   public static void recount(StringBuffer s3, StringBuffer s4)
    {
     s4.append("more");
     s3=s4;
    }

   public static void main(String[] args)
    {
     StringBuffer s1=new StringBuffer("s1");
     StringBuffer s2=new StringBuffer("s2");
     ALGore.recount(s1,s2);
     System.out.println("s1 is "+s1);
     System.out.println("s2 is "+s2);
    }
  }

输出:
s1 is s1
s2 is s2more

疑问:
    public static void recount(StringBuffer s3, StringBuffer s4)中,如果传递的是引用,s3=s4就应该影响s1,输出是s1 is s1more  s2 is s2more;如果是传递的是拷贝,s4.append("more")就应该不影响s2,输出是s1 is s1  s2 is s2,现在输出的是s1 is s1 s2 is s2more 如何解释?

|
s2传递给s4,所以改变了s2所指的对象值。
s1传递给s3,但是改变的引用,所以回传s1的时候还是原来的引用,其所指的
对象没有改变!

|
所以输出s1,s2的值时s1='s1',s2='s2more'

|
public static void recount(StringBuffer s3, StringBuffer s4)中,如果传递的是引用,s3=s4就应该影响s1,输出是s1 is s1more  s2 is s2more;如果是传递的是拷贝,s4.append("more")就应该不影响s2,输出是s1 is s1  s2 is s2,现在输出的是s1 is s1 s2 is s2more 如何解释?
/********************************************************/
1.首先应该肯定:变元传递的是引用(因为变元的类型为对象。);
2.recount方法中有:s3=s4;//它其实并不影响s1.
  在main方法中调用recount方法时,情况是这样的:先将s1的指针赋给s3;将s2的指针赋给s4.即s3与s1指向同一个对象,s4与s2指向同一个对象,当程序执行s3=s4时:!!!注意这一行只是让s3不再指向s1所指向的对象而是指向s4所指向的对象。对于s1来讲它仍然指向原对象。所以不影响s1.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • C++拷贝构造函数(深拷贝与浅拷贝)详解
  • python中的深拷贝(deepcopy)和浅拷贝(copy)介绍及代码参考
  • Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
  • 关于redhat linux7.3文件拷贝:我要将/dev下的全部文件拷贝到另一个已mount的硬盘上,怎么大部分文件拷不过去呢??
  • c# 深拷贝与浅拷贝的区别分析及实例
  • 快速文件拷贝工具 FastCopy
  • scp远程拷贝问题
  • cp命令拷贝目录的问题 求教
  • 关于“零拷贝”问题
  • 从Linux拷贝文件时,总出现符号链接错误时怎么回事?
  • 如何用shell脚本实现二进制拷贝?
  • 拷贝文件的问题
  • 如何将整个文件夹都拷贝过去?
  • vim 如何段拷贝。
  • [Suse Linux]两台机器上怎样能快速拷贝大量的文件
  • RH9下文件拷贝出错问题,求教
  • DVD 拷贝工具 dvd:rip
  • fpt拷贝文件问题
  • 两台UNIX机器之见如何拷贝文件
  • 远程拷贝目录的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3