首先看代码:
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中也是一样的。对于其它的,要判断是对象复制还是引用传递,都可以判断对象的引用是否相等来简单的判别。
分享到:
相关推荐
目的是说明一下概念:引用传递的意思就是说你传递的是对象的引用,对这个引用的修改也会导致原有对象的改变。学过C/C++的朋友们都知道,在交换2个数的时候,如果自己实现一个swap函数,需要传递其引用或者指针。 ...
对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。...
值传递是指将实参的值复制一份传递给形参,而引用传递是指将实参的引用传递给形参,形参和实参指向同一个对象。 在Python中,大部分情况下都是采用引用传递的方式进行函数参数传递。这是因为Python中的变量实际上是...
首先讨论函数之前,先弄清楚基本类型值与引用类型值...引用数据类型:对象 1.基本类型的复制 当基本类型的A给另一个基本类型B赋值时,会在栈里面创造一个空间,将A的值,复制一份,放在B上。 var A=5; var B=A; 在内
如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值–相当于通过“引用传递”来赋值。如果函数收到的是一个不可变变量(比如数字、字符串或者元祖)的引用,就不能直接修改原始对象–...
当变量A赋值给变量B时,会将栈中的值复制一份到为新变量分配的空间中。 如何理解? 代码如下: var x = y = 1; y = 2; alert(x); x的值为多少? 代码如下: var obj = {}; var sub = {}; sub[‘id’] = 3; obj...
我们先看一下值传递和引用传递的概念...值传递的函数中无法改变原始对象,引用传递中函数 可以改变原始对象 我们通过例子理解一下Java的值传递: public static void main(String[] args) { int a = 10; int b = 20;
一、原理 可变对象:list dict set 不可变对象:tuple string int float bool ...2. 当人们复制可变对象时,就复制了可变对象的引用,如果改变引用的值,则修改了原始的参数。 3. 为了简化内存管理,Python通过引
不管是向函数传递参数或者是任何形式的对象复制来说,不可变对象(比如整数,字符串)被真正复制,而可变对象只是复制了一个对他们的引用,即在内存中只有一份对象,而引用两份。 a=b 这样的赋值,就会创建对b的...
此时浅拷贝是引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。两个对象中的该成员变量执行的是同一个地址,其中一个对象的值修改后,另一个对象的值也会改变。 * 深拷贝基本介绍 * 1)...
当组件间传递对象时,由于此对象的引用类型指向的都是一个地址,所以在子组件中修改对象的某个属性值,父组件中的对象对应的属性也会随之改变,如果有这种双向绑定的需要,那么这也算一种不错的办法,但如果不需要...
这些方法依赖于将对象作为引用传递给其他类方法,而不是作为值传递,而按值传递却是PHP的默认做法。幸好,PHP5解决了这个问题,现在所有对象在默认情况下都被视为引用。但是,由于所有对象都被视为引用而不是值,...
python面试题100 python面试题100全文共79页,当前为第1页。python面试题100全文共79页,当前...(这就是这个问题的重点) 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了
1 语法 1.1 基础语法 clone 需要操作原对象,但又不想影响原对象. 复制代码 代码如下: $K_back = clone $K;...方法引用传递,改变源对象 复制代码 代码如下: function set_K(& $K){…} function & get_K(){…}
字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以纠结这个问题也是没意义的)但是用于比较的时候显然是属于传值比较 下面来一起看看详细的介绍吧 首先我们看下面...
6.3.4. 复制传递和状态文件 6.4. 如何设置复制 6.5. 不同MySQL版本之间的复制兼容性 6.6. 升级复制设置 6.6.1. 将复制升级到5.0版 6.7. 复制特性和已知问题 6.8. 复制启动选项 6.9. 复制FAQ 6.10. 复制故障诊断与...
字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以纠结这个问题也是没意义的)但是用于比较的时候显然是属于传值比较(稍后具体说比较的事) 下面讲一下在使用中...
•两个相同类型的引用变量,由于它们实际引用的对象的类型不同,当它们调用同名方式时,可能呈现出多种行为 特征,这就是多态。 引用变量的类型转换 •将一个子类对像赋给父类,这就是向上转型。向上...
引用类型参数,相对应的实参和形参链接到同一个对象,在方法中改变了形参引用对象时,其实就是改变了实参引用的对象。 例4.2 TwoInt类中有两个int类型的属性,编写方法swap交换该类对象的两个属性的值,并显示交换...
今天学习笔记主要有这样几个关键字:变量、参数传递、执行环境、变量对象、作用域链。 1.变量 变量需要注意的有两点:变量声明和复制变量值。 变量声明肯定大家都很熟悉,在JS中我们都是通过 var 关键字...