几句话弄清楚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

相关文章推荐

MySQL详解(17)-----------海量数据库的查询优化

许多程序员认为查询优化是DBMS(数据库教程管理系统)的任务,与程序员所编写的SQL语句关系不大,这是错误的。一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查询...

Java程序员的推荐阅读书籍

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水...

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

最近刷题用递归解决关于树的问题的时候,在递归函数调用的时候什么时候传入值,什么时候传入引用有疑问,因为这关系到什么时候我们需要恢复现场,什么时候不需要。在网上搜索了一下,感觉这篇总结的非常简单明了,简...
  • yangliuy
  • yangliuy
  • 2015年01月28日 14:58
  • 16398

【贪吃蛇—Java程序员写Android游戏】系列 0. 前言几句话

本系列文章初步的计划是,由Android SDK Sample的贪吃蛇游戏(Snake)为切入点,通过跟J2ME手机游戏和J2SE桌面游戏开发的比较,逐步介绍Android游戏开发的相关知识和流行框架...

看完《乔布斯传》中文版后记下来的几句话

1、那些疯狂到以为自己能够改变世界的人,才能真正改变世界。   2、有一天,他的四年级老师问他:“关于这个世界,你有什么不明白的?”乔布斯回答说:“我不明白为什么我爸爸一夜之间就破产了。”...

it受用的几句话

  • 2011年05月27日 15:10
  • 651B
  • 下载

写给matlab新手的几句话

  • 2009年04月15日 14:24
  • 5KB
  • 下载

java中的try-catch-finally执行顺序你真的弄清楚了吗?

转载自http://blog.csdn.net/lu_ca/article/details/52184423 前言: java 中的异常处理机制你真的理解了吗?掌握了吗? catch 体...

写给MATLAB新手的几句话

  • 2014年09月14日 13:06
  • 48KB
  • 下载

c语言几句话

  • 2013年06月13日 23:46
  • 76KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几句话弄清楚Java参数传值还是传引用
举报原因:
原因补充:

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