回帖地址:http://www.iteye.com/topic/12961#75177
所有的参数传递都是 传值,从来没有 传引用 这个事实。
所有的参数传递都会在 程序运行栈上新分配一个值的复制品.
楼主的第一段代码。
public static void test(Pass passA); { passA.a="abc"; }
这个传的 PassA 的 地址值。这个 地址值 被复制了一份。
不信,你写:
public static void test(Pass passA); { passA = null; }
看看, 对passA有什么影响?
毫无作用。函数调用出来后,passA还是原来的值,不会变成Null.
但是,你的代码对 passA进行了操作 passA.a ,改变了passA的成员变量。
这个成员变量是一个真实指向String 的 地址,当然能够被改变。
这就是操作 (.) 和 赋值 (=) 的区别。
这是对 成员变量 a 的 赋值。真正改变了成员变量 a 的值。
注意,这里传递的参数是 passA, 而不是 a.
所以,passA 被复制了一份。passA 的这个副本的 a 变量还 指向 原来的 passA 的 a 变量。
public static void test(StringBuffer str) { str.append("World"); }
只有对参数的 赋值,没有对参数的操作,当然不会产生影响。
public static void test(StringBuffer str) { str.append("World"); }
对参数进行了操作,当然会产生影响。
public static void main( String[] args ){ String str = "one"; helo(str); System.out.println(str); int n = 1; helo1(n); System.out.println(n); } public static void helo( String str ){ str = "two"; } public static void helo1(int n){ n=2; }
输出:
one
1
相关推荐
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参数传递的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参数传递及值传递实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下