转载 : Java 中的值传递和引用传递
Java中,传递对象到函数中去时,传递的是它的引用的副本(可以理解成C++里的传引用),这种情况下,函数体中对该对象的属性做出的改变会在函数结束之后仍然有效。但是,假如在函数体中将传入的引用指向一个新的对象(例如new一下),则原始对象的属性不会被改变。
http://tech.techweb.com.cn/thread-533188-1-1.html
亮点:
例
3:
Java
代码 复制代码
( J: l9 g* t' _) {3 s/ W r
1. //
对象的引用
(
不是引用的副本
)
是永远不会改变的
# a' n, w" T4 \
2. class A {
3. int i = 0;
4. }
, P" b. \+ `. s0 q
5.
% i- U9 N" A* I+ G
6.
7. public class Test {
8.
9. public static void add(A a) {
10. a = new A();
: V/ P6 E& w$ z7 E/ I9 X' D4 a6 N
11. a.i++;
; k$ [7 B' `+ h( p/ F
12. }
13.
14. public static void main(String args[]) {
, o- f6 g* L) ?7 K
15. A a = new A();
, W( M* f( k% P; L! {- n4 l/ V" C
16. add(a);
, q0 u9 H+ w. |' i) o. `
17. System.out.println(a.i);
18. }
19. }
5 j( d* C' z3 `8 F+ U3 ^
20.
* C# j# `$ z0 h C2 B( q
21.
输出结果是
0
22.
在该程序中,对象的引用指向的是
A ,
而在
change
方法中,传递的引用的一份副本则指向了一个新的
OBJECT
,并对其进行操作。
23.
而原来的
A
对象并没有发生任何变化。 引用指向的是还是原来的
A
对象。
未知美人
Your opinions
HxLauncher: Launch Android applications by voice commands