`
ayis
  • 浏览: 187177 次
  • 性别: 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  
能解释一下什么叫复制,什么叫引用的传递吗

相关推荐

    c++按引用传递

    C++按引用传递是C++编程语言中的一种参数传递方式,顾名思义,它是将参数传递给函数时,以引用的形式传递,而不是以值的形式传递。这种传递方式可以使函数对外部变量进行修改,实现了函数之间的参数传递。 什么是...

    java 值传递和引用传递的比较

    而引用传递只复制对象的引用,不增加额外的内存开销。 3. 安全性:值传递更安全,因为它不会意外改变原始变量;引用传递可能引发意料之外的副作用,尤其是在多线程环境中。 在编程实践中,了解这些概念可以帮助你...

    java参数传递时到底是值传递还是引用传递[归类].pdf

    无论将Java的参数传递称为"值传递"还是"引用传递",重要的是要明白对象的引用不会改变,但对象的内容可以在方法中被修改。这种机制使得Java的代码更安全,避免了不必要的副作用,同时也提供了灵活的编程模型。

    java值传递与引用传递

    其次,引用传递则是将对象的引用(即内存地址)而不是其值复制给函数参数。这意味着,函数内部对形参的修改会直接影响到实际参数,因为它们都指向同一个内存位置。在Java中,除了基本数据类型外的所有类型(包括...

    LabVIEW中引用的概念及在VI间传递值

    在LabVIEW中,“引用”是程序设计中的一个重要概念,它允许你直接操作对象,而不是复制该对象。这在大型项目或需要高效数据交换的场景中尤其重要。本文将深入探讨LabVIEW中的引用概念以及如何在虚拟仪器(VI)之间...

    值传递和引用传递

    在计算机编程中,值传递和引用传递是两种常见的参数传递方式。这两种传递方式在不同的编程语言中有不同的实现细节,但其核心概念是相似的。本文将详细介绍值传递和引用传递的概念、用法以及它们之间的区别,并通过...

    Java-Java面向对象中引用传递教程

    通过深入学习和实践Java中的引用传递,可以更高效地管理和操作对象,避免不必要的数据复制,同时理解其在多线程环境中的行为,以及如何在设计模式中运用这一特性。在视频教程中,这些知识点通常会结合实例进行详细...

    C++引用传递.

    引用传递通常用于避免复制大型对象的成本,或者当需要修改原始数据时。 #### 实验题目描述 本次实验的主要任务是设计一个函数`Math`,该函数接收两个浮点数`a`和`b`作为参数,并通过引用传递的方式返回它们的和、...

    23.Java对象作为参数传递是传值还是传引用1

    许多人认为对象是按引用传递,而实际上,Java总是按值传递,包括对象。这里的“值”指的是对象的引用,而不是对象本身。这与C++或C#等其他语言中对象的传递方式有所不同。 首先,我们需要理解Java中的引用概念。当...

    C++单向按值传递(产生临时对象) 双向按引用传递(不产生临时对象不占任何内存).rar

    1. 性能:如果传递的是大型对象,按值传递可能会导致不必要的内存复制,这时应考虑按引用传递。 2. 安全性:按值传递可以保护实参不被意外修改,如果希望函数不修改实参,应使用按值传递。 3. 返回值:函数可能通过...

    第04章 面向对象(上) 08 值传递与引用传递

    总之,值传递和引用传递是编程中的基础概念,尤其是在Java这样的面向对象语言中。通过深入理解它们的工作原理,开发者可以更好地控制代码的行为,写出更加高效、健壮的程序。在实际编程过程中,我们需要根据具体需求...

    值引用与对象引用

    因此,当一个`Integer`对象被传递或复制时,实际上是传递或复制其引用。但由于不可变性,任何尝试修改`Integer`对象的行为都会导致创建新的对象。 #### 五、总结 理解值引用与对象引用之间的区别对于编程至关重要...

    java对象和对象的引用之间的关系

    Java中的参数传递有两种方式:基本类型的值传递和引用类型的引用传递。对于基本类型(如`int`),传递的是值的副本;而对于引用类型(如`StringBuffer`),传递的是引用的副本。这意味着对于引用类型的参数,如果在...

    引用和对象的关系,还有值传递

    复制引用与对象 - **复制引用**:当执行`Vehicle veh2 = veh1;`时,实际上是复制了`veh1`的引用,而不是复制`veh1`指向的对象。这意味着`veh1`和`veh2`都指向了同一个对象。 - **改变引用指向**:通过`veh2 = new ...

    易语言源码易语言指针传递对象源码.rar

    拷贝传递会创建对象的一个副本并传递这个副本,而引用传递则只传递对象的地址,不复制对象本身。易语言支持这两种方式,但指针传递在处理大对象或频繁调用时能提供更好的性能。 在易语言中,指针的使用涉及到几个...

    java值传递和引用传递详解

    Java中的参数传递方式主要有两种:值传递和引用传递。理解这两种机制是编程中至关重要的,因为它们直接影响到函数内部如何改变或...而对于对象,引用传递则允许方法修改对象的状态,通常用于实现数据处理或功能增强。

    Delphi值传递和引用传递实例

    Delphi,作为一款基于Pascal语法的面向对象的编程环境,提供了两种主要的参数传递机制:值传递(ByValue)和引用传递(ByReference)。这两者在处理函数或方法的参数时有着显著的区别,对程序性能和数据安全有直接...

    java中对象和对象引用的区别!

    这一点在Java中非常重要,因为它影响到了如何处理对象的复制以及对象的生命周期等问题。 - **空引用** 如果我们声明了一个引用变量但并未给它分配任何对象,那么这个引用变量就称为“空引用”或“未初始化的引用...

    浅谈JavaScript 函数参数传递到底是值传递还是引用传递

    在传统观念中,JavaScript的参数传递常被误解为引用传递,即类似C++或C中的指针传递。然而,JavaScript的实现其实更为复杂,它包含了值传递和引用传递的特性,但并不完全等同于这两种方式。 首先,我们来看基础类型...

Global site tag (gtag.js) - Google Analytics