把对象和变量,这两个概念区分清楚,比如:
String str = "abc";
这里面等号左边是变量,等号右边是对象。String tmp = str;
等号左右两边都是变量,赋值的内容就是str所引用对象的地址。

解决方案 »

  1.   

    两个类 比如两个Integer i1,i2
    i1 = new Integer(1);
    i2 = new Integer(2);
    现在 i1和i2 引用不同
    现在想将i2 里的所有值赋给i1
    使用 i1 = i2 后 , i1的引用 就变成i2的了,
    怎么可以让i2 赋值 i1后 ,但是 i1 引用不变呢?
      

  2.   

    首先你要搞懂什么是引用,打个比方吧,电风扇的调档方向扭,它每次只能指向一个档,它就相当于一个引用,当你将它打到1档时,它所引用的是1,调到2档时它所应用的是2,你不能同时将它即引用1又引用2吧,所以,如果你将i2赋给i1后,i1的引用指向了i2对象的地址,除非i1和i2指向的是同一个对象。
      

  3.   

    对象的引用可以指向堆内存存放的对象(内容)2个对象的引用可以同时指向一个对象那么他们的内容肯定是相同的String s1="对象";
    String s2=s1;
      

  4.   

    你的问题有很多概念性的错误,我来帮你重新翻译一遍吧两个类 比如两个Integer i1,i2   //应该是说Integer类的2个引用类型的变量i1,i2
    i1 = new Integer(1);
    i2 = new Integer(2);
    现在 i1和i2 引用不同   //2个引用类型的变量指向不同的内存空间
    现在想将i2 里的所有值赋给i1 //将i2所指向对象所有成员变量的值赋值给i1所指向的对象
    使用 i1 = i2 后 , i1的引用 就变成i2的了,   //使用i1=i2,i1也指向i2所指向的内存空间了
    怎么可以让i2 赋值 i1后 ,但是 i1 引用不变呢?
    解答:我觉得你将i2指向的对象的成员变量的值挨个赋值给i1指向的对象不就行了吗?数据很多吗?这样应该可以解决你的问题吧
      

  5.   


    用java的 克隆
    建议用深克隆,不要用浅克隆,去百度搜索一下就知道了
      

  6.   

    这个问题确实是新手有时比较纠结的问题。 java有个深复制和浅复制的问题。你看了就知道了。