关于java参数传递这个问题,伴随着java的诞生,人们对此一直争论不休。最近突然又想起了这个问题,发现自己仍然是挺晕的,看了篇文章挺不错的,但已不知道原出处了,在此转载一下。
http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.html
关于这个问题可以参考《Thinking in java》。
对于对象作为参数传递,下面写个小例子。
public class Test {
public static void main(String[] args) {
A a=new A();
System.out.println("a的hashcode是:"+a.hashCode());
nochange(a);
System.out.println("a的hashcode是:"+a.hashCode());
}
//赋予新引用前后地址的变化
public static void nochange(A a){
System.out.println("——————————nochange方法开始————————————");
System.out.println("没有改变引用的前提下,a的hashcode是:"+a.hashCode());
a=new A();
System.out.println("将新引用赋予传递进来的参数之后,a的hashcode是:"+a.hashCode());
System.out.println("——————————nochange方法结束————————————");
}
}
class A{}
执行结果为:
a的hashcode是:33482492
——————————nochange方法开始————————————
没有改变引用的前提下,a的hashcode是:33482492
将新引用赋予传递进来的参数之后,a的hashcode是:25669322
——————————nochange方法结束————————————
a的hashcode是:33482492
在这里总结一下:
1、基本数据类型作为参数传递
这个就是众所周知了,参数传递是将基本数据类型的值复制了一份,并把复制后的副本作为参数进行传递。
2、对象作为参数传递
通过上面那篇文章的分析和例子,我们可以知道。对象的引用实际上也是一个值,只不过这个值表示地址。所以对象作为参数传递与基本类型类似,是将对象的引用复制了一份,并把复制后的副本作为参数进行传递。
如果基于“不改变所传递的引用”(暂且这么说)这个前提,在接受参数的方法内部对代表对象的引用进行操作的话,实际上就是操作对象本身。所以在表面看来,好像传递的是引用。
如果基于“改变所传递的引用”这个前提,将一个新的引用赋予所传递的引用。从那篇文章和上面的例子可以看出,原引用并没有改变。
因此得出的结论是:对象做为参数传递实际上传递的是引用的拷贝,如果把引用所代表的地址当作值的话,对象作为参数传递仍然是值传递。
在我看来,为了理解上的统一,
java的参数传递是传递的值。
分享到:
相关推荐
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...
这里详细的说明了,java参数传递的过程,引用传递,值传递
关于Java参数传递的PPT,详细介绍参数传递的类型。彻底理解Java只有唯一传递方式——值传递。
java参数传递 java 参数
传值还是传引用 详细讲解JAVA参数传递机制 一目了然
Java参数传递的经典教学PPT,引用类型,基础类型传递的区别,String和StringBuffer类型传递的区别。
java参数传递时到底是值传递还是引用传递分享.pdf
JNI中C和Java参数传递详细例子,各种数据类型,基本类型,数据,结构体,DEMO,非常适合初学者,一看就明,详细例子
java参数传递(经典).docx
java参数传递时到底是值传递还是引用传递[归类].pdf
java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo
java
主要介绍了JAVA参数传递方式,结合实例形式分析了java按值传递与引用传递区别及相关操作注意事项,需要的朋友可以参考下
主要介绍了Java参数传递及值传递实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下