传值还是传引用

原创 2009年08月01日 14:00:00

碰到了很基本的一个问题,竟然把自己绕进去了,其实,还是基本功的不扎实。

 

我们都知道,对于一个java方法:

      swap(int a, int b){

             int temp = a;

             a = b;

             b = temp;

      }

如果在方法内部简单的交换a、b,在这个方法的外部,a和b在执行完swap后是不会被交换的,这个是最基本的常识,不用多说了.

如果是一个Object,在方法:

swap(Object a, Object b){

    int temp = a.i; // 假设a和b都有"i”这个属性

    a.i = b.i;

    b.i = temp;

}

那么a.i和b.i的值会被交换,可是,问题关键就在于,如果是如下这样一个方法,a和b会交换吗?代码如下:

swap(Object a, Object b){

    Object temp = a;

    a = b;

    b = temp;

}

结果呢?实际上a和b是不会被交换的,而我却还大言不惭的说会交换,哎,真丢人。

很佩服javaeye的buaawhl,对这个问题解释的很深刻:传入方法的参数实际上是“复制”了一份做“压栈”操作,此外,“.”是对内存操作,而“=”是赋值操作。http://www.javaeye.com/topic/12961?page=1http://dreamhead.blogbus.com/logs/2005/05/1189478.html

 

还是buaawhl说的精辟,这个问题其实说到底,如果你编译原理,汇编的基本功扎实,是不会存在任何问题和疑问的。

Java是传值还是传址引用

  • 2007年04月20日 17:28
  • 53KB
  • 下载

JAVA中的引用到底是传值还是传址?

JAVA中的引用到底是传值还是传址? JAVA中除了8种基本类型外,其它的类型是引用类型,像STRING,数组,文件流等。引用变量在JAVA中是一个存储对象在内存中的地址的变...

Python 函数参数引用(传值 or 传址)copy和deepcopy

博文结构: 1、传值、传址的概念和区别 2、python 参数传递的方式 3、copy和deepcopy 的使用 4、python的数据存储方式传值、传址的概念和区别:传值:被调函数局部变量改...

Python 函数参数引用(传值/传址)/copy/deepcopy

精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是...
  • bbbeoy
  • bbbeoy
  • 2017年03月28日 16:26
  • 210

C++传值,传址,引用的区别

引用与指针的比较                                                                                           ...

Java中的形参和实参的区别以及传值调用和传引用调用

名词解析: 1.形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。因此仅仅在方法内有效。 2.实参:传递给被调用方法的值,预先创建并赋予...

java传值与传引用的三种情况

基本数据类型传递的是值的拷贝;对象类型传递的是引用的拷贝;而String类型传递的虽然也是对象,但它不同于一般的对象类型,它String被设计为不可修改的类型,也就是对String对象的任何修改都将重...

传值与传引用

python的函数传值和传引用,和c、c++语言是一样的。 在开始之前,我们有必要分清一下python的一些基础概念。 首先要说的是:变量 与 对象 在python中,类型属于对象,变量是没有类...

lvalue和rvalue、传值和传引用、木桶

摘自:http://www.cnblogs.com/linyawen/archive/2011/12/07/2279936.html http://gideshi.blog.163.com/bl...

java 实参、形参、传值调用、传引用调用的理解

实参: 声明的,要用前需要赋值的。 形参: 函数括号里的 import java.util.*; public class Main { public static void change(St...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:传值还是传引用
举报原因:
原因补充:

(最多只允许输入30个字)