`
ayis
  • 浏览: 186245 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

是对象复制,还是引用的传递

    博客分类:
  • java
阅读更多

首先看代码:

import java.util.ArrayList;

/** 
 * @author ayi
 * @version 创建时间:Oct 8, 2008 1:10:01 PM 
 * 类说明 :测试对象添加到ArrayList容器中,是对象复制,还是引用的传递;以及在toArarry()又是怎么样。
 */

public class TestArarryCopy {
	
	public static void main(String args[]){
		
		Person p1=new Person();
		ArrayList<Person> vect=new ArrayList<Person>();
		Person[] pArarry;
		
		vect.add(p1);
		if(vect.get(0)==p1){
			System.out.println("对象添加到ArrayList容器中是引用的传递;");
		}else{
			System.out.println("对象添加到ArrayList容器中是对象的复制;");
		}
		
		pArarry=(Person[])vect.toArray(new Person[0]);
		if(pArarry[0]==p1){
			System.out.println(" 在toArray()中是引用的传递;");
		}else{
			System.out.println("在toArray()中是对象的复制;");
		}
	}
}

/**
 * 一个用来使用的对象
 * @author ayi
 *
 */
class Person {
	
}

 结果:对象添加到ArrayList容器中是引用的传递;在toArray()中也是引用的传递。在Vector中也是一样的。对于其它的,要判断是对象复制还是引用传递,都可以判断对象的引用是否相等来简单的判别。

4
1
分享到:
评论
5 楼 zhaoyu_h 2011-09-09  
嗯。不错的啊。。。学习啦。。。
4 楼 ayis 2008-10-10  
williamy 写道

能解释一下什么叫复制,什么叫引用的传递吗

复制会产生几个副本,每个地方都有自己的副本;引用的传递就是只保存它的地址,用的时候大家都到这来找,但同时大家也都可以改变它。
3 楼 qq250203031 2008-10-09  
飘过~~~
2 楼 lerous 2008-10-08  
当然是引用拉(我也是走了一次程序才知道的)```
1 楼 williamy 2008-10-08  
能解释一下什么叫复制,什么叫引用的传递吗

相关推荐

    python中的对象拷贝示例 python引用传递

    目的是说明一下概念:引用传递的意思就是说你传递的是对象的引用,对这个引用的修改也会导致原有对象的改变。学过C/C++的朋友们都知道,在交换2个数的时候,如果自己实现一个swap函数,需要传递其引用或者指针。 ...

    javascript的字符串按引用复制和传递,按值来比较介绍与应用

    对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。...

    python-引用传参.docx

    值传递是指将实参的值复制一份传递给形参,而引用传递是指将实参的引用传递给形参,形参和实参指向同一个对象。 在Python中,大部分情况下都是采用引用传递的方式进行函数参数传递。这是因为Python中的变量实际上是...

    论JS函数传参时:值传递与引用传递的区别

    首先讨论函数之前,先弄清楚基本类型值与引用类型值...引用数据类型:对象 1.基本类型的复制 当基本类型的A给另一个基本类型B赋值时,会在栈里面创造一个空间,将A的值,复制一份,放在B上。 var A=5; var B=A; 在内

    Python的对象传递与Copy函数使用详解

    如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值–相当于通过“引用传递”来赋值。如果函数收到的是一个不可变变量(比如数字、字符串或者元祖)的引用,就不能直接修改原始对象–...

    JavaScript传递变量: 值传递?引用传递?

    当变量A赋值给变量B时,会将栈中的值复制一份到为新变量分配的空间中。 如何理解? 代码如下: var x = y = 1; y = 2; alert&#40;x&#41;; x的值为多少? 代码如下: var obj = {}; var sub = {}; sub[‘id’] = 3; obj...

    为什么Java只有值传递

    我们先看一下值传递和引用传递的概念...值传递的函数中无法改变原始对象,引用传递中函数 可以改变原始对象 我们通过例子理解一下Java的值传递: public static void main(String[] args) { int a = 10; int b = 20;

    Python可变对象与不可变对象原理解析

    一、原理 可变对象:list dict set 不可变对象:tuple string int float bool ...2. 当人们复制可变对象时,就复制了可变对象的引用,如果改变引用的值,则修改了原始的参数。 3. 为了简化内存管理,Python通过引

    python中引用与复制用法实例分析

    不管是向函数传递参数或者是任何形式的对象复制来说,不可变对象(比如整数,字符串)被真正复制,而可变对象只是复制了一个对他们的引用,即在内存中只有一份对象,而引用两份。   a=b 这样的赋值,就会创建对b的...

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】

    此时浅拷贝是引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。两个对象中的该成员变量执行的是同一个地址,其中一个对象的值修改后,另一个对象的值也会改变。 * 深拷贝基本介绍 * 1)...

    vue组件传递对象中实现单向绑定的示例

    当组件间传递对象时,由于此对象的引用类型指向的都是一个地址,所以在子组件中修改对象的某个属性值,父组件中的对象对应的属性也会随之改变,如果有这种双向绑定的需要,那么这也算一种不错的办法,但如果不需要...

    PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析

    这些方法依赖于将对象作为引用传递给其他类方法,而不是作为值传递,而按值传递却是PHP的默认做法。幸好,PHP5解决了这个问题,现在所有对象在默认情况下都被视为引用。但是,由于所有对象都被视为引用而不是值,...

    python面试题100.docx

    python面试题100 python面试题100全文共79页,当前为第1页。python面试题100全文共79页,当前...(这就是这个问题的重点) 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了

    深入php面向对象、模式与实践

    1 语法 1.1 基础语法 clone 需要操作原对象,但又不想影响原对象. 复制代码 代码如下: $K_back = clone $K;...方法引用传递,改变源对象 复制代码 代码如下: function set_K(& $K){…} function & get_K(){…}

    JavaScript中引用vs复制示例详析

    字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以纠结这个问题也是没意义的)但是用于比较的时候显然是属于传值比较 下面来一起看看详细的介绍吧 首先我们看下面...

    MySQL 5.1中文手冊

    6.3.4. 复制传递和状态文件 6.4. 如何设置复制 6.5. 不同MySQL版本之间的复制兼容性 6.6. 升级复制设置 6.6.1. 将复制升级到5.0版 6.7. 复制特性和已知问题 6.8. 复制启动选项 6.9. 复制FAQ 6.10. 复制故障诊断与...

    浅谈js中的引用和复制(传值和传址)

    字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以纠结这个问题也是没意义的)但是用于比较的时候显然是属于传值比较(稍后具体说比较的事) 下面讲一下在使用中...

    【04-面向对象(上)】

    •两个相同类型的引用变量,由于它们实际引用的对象的类型不同,当它们调用同名方式时,可能呈现出多种行为  特征,这就是多态。 引用变量的类型转换 •将一个子类对像赋给父类,这就是向上转型。向上...

    第4章-Java面向对象程序设计-Java语言GUI程序设计-赵满来-清华大学出版社.pptx

    引用类型参数,相对应的实参和形参链接到同一个对象,在方法中改变了形参引用对象时,其实就是改变了实参引用的对象。 例4.2 TwoInt类中有两个int类型的属性,编写方法swap交换该类对象的两个属性的值,并显示交换...

    浅析JavaScript中的变量复制、参数传递和作用域链

    今天学习笔记主要有这样几个关键字:变量、参数传递、执行环境、变量对象、作用域链。  1.变量  变量需要注意的有两点:变量声明和复制变量值。  变量声明肯定大家都很熟悉,在JS中我们都是通过 var 关键字...

Global site tag (gtag.js) - Google Analytics