StupidBeauty
Read times:1035Posted at: - no title specified

转载 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
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands