几句话弄清楚Java参数传值还是传引用

转载 2013年12月02日 23:02:29

作者:fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:Java 传值 传引用

这是个老生常谈的问题了,引起过无数争论,但可以说一直没有一个令人满意的回答。

有些人非要故弄玄虚,把传引用说成是栈里面放的是引用的值,说只有传值没有传引用,那看看这句经典名言吧:

O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts it best: "Java manipulates objects 'by reference,' but it passes object references to methods 'by value.'"

从这里也可以看到,David 也没那么生硬,不过是看你从哪个角度来认识这个问题,如果大家习惯c++的那种传参时的理解方式,为何不能这么比较呢?

有人已经总结过:

参见

http://www.javaresearch.org/article/3156.htm

1、对象是按引用传递的
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本
写的没错,但是文字太多,第二条就已经把人弄糊涂了,得仔细看完4条才清楚。而且对String类型的疑惑没有解决。

这么简单的事情,何必这么绕呢?为啥没人跟c++过不去,偏要跟Java来劲?

三句话总结一下:

1.对象就是传引用

2.原始类型就是传值

3.String等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待。可以认为是传值。

其他参考文章:

http://www-128.ibm.com/developerworks/cn/java/l-jpointer/index.html

http://dreamhead.blogbus.com/logs/2005/05/1189478.html

http://www.javaeye.com/topic/12961

几句话弄清楚Java参数传值还是传引用

原文转自:http://blog.csdn.net/fbysss/article/details/3082949 作者:fbysss msn:jameslastchina@ho...
  • guchuanlong
  • guchuanlong
  • 2013年10月11日 00:01
  • 493

Java中传值和传引用的区别

声明:此文是作为本人自己学习的心得与总结,同时也是与同学们进行交流,如果有错误的地方,希望同学们进行指正        在这里,要想搞清楚二者的区别,那么首先明白两个概念,“传值”、“传引用”。   ...
  • sunguoqingufo
  • sunguoqingufo
  • 2016年02月21日 14:26
  • 4351

关于Java对象作为参数传递是传值还是传引用的问题

前言  在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引...
  • xiangwanpeng
  • xiangwanpeng
  • 2016年09月06日 22:37
  • 2585

浅谈在Java语言中究竟是传值还是传引用

首先,推荐对Java有一定理解的同仁一本书《Practical Java》。 在《Practical Java》中也有一个章节介绍Java中关于传值和传引用的问题,堪称经典。 《Pract...
  • u013890660
  • u013890660
  • 2014年03月19日 11:31
  • 810

Java参数传值还是传引用

Java参数传值还是传引用  参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引...
  • MyComeIn
  • MyComeIn
  • 2015年03月10日 11:33
  • 390

传值、传引用、传值

一、 函数参数传递机制的基本理论   函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用...
  • azhexg
  • azhexg
  • 2013年07月12日 15:20
  • 9406

golang传值和传引用

1.定义: b = a;b.modify();如果b的修改不会改变a的值,那么是传值;否则,是传引用 2.golang中大多数是传值的,有: 基本类型:byte,int,bool,string 复合类...
  • cyk2396
  • cyk2396
  • 2017年12月25日 16:07
  • 161

String参数是传值还是传递引用的测试

String参数是传值还是传递引用的测试      还是把测试拿来说说吧。。   public class StringTest {  public static void main(St...
  • u010930968
  • u010930968
  • 2015年07月14日 09:19
  • 722

Java - 传值还是传引用?

只学Java的人自然是不会想到什么值和引用的问题的。但是每个从C++过来的人,都会问这个问题。那么Java倒底是传值还是传引用呢?网上众说纷纭,但大多是扯淡。 答案是: (1) 当参数为 bo...
  • iamshaofa
  • iamshaofa
  • 2012年06月29日 11:12
  • 828

java传值还是传引用

最近一直在看primer c++,函数一章对c++函数之间传递参数有详细的讲解,传值、传指针和传引用的应用与区别都讲得很清楚,以前一直用java,由于java没有指针,当时也没有引用这个概念,所以没有...
  • johnkai
  • johnkai
  • 2010年04月28日 14:10
  • 512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几句话弄清楚Java参数传值还是传引用
举报原因:
原因补充:

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