Topic: 值传递没有看懂 |
Print this page |
1.值传递没有看懂 | Copy to clipboard |
Posted by: jackyshen Posted on: 2005-10-12 23:27 Java 编程语言只由值传递参数,也就是说,参数不能由被调用的方法来改变。当一个对象实例作为一个参数传递到 方法中时,参数的值就是对象的引用。对象的内容可以在被调用的方法中改变,但对象引用是永远不会改变的。 |
2.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: jackyshen Posted on: 2005-10-12 23:27 什么意思阿 |
3.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: sl4zv Posted on: 2005-10-13 19:39 difficult topic |
4.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: ranchgirl Posted on: 2005-10-14 13:22 Read detailed explanation here: http://www.cjsdn.net/post/view?bid=53&id=151657&sty=3 |
5.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: jackyshen Posted on: 2005-10-15 20:03 谢谢 |
6.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: jaman Posted on: 2005-10-18 02:20 这样想吧,我把我的对象的引用拷贝了一份出来, 然后给你,你怎么改你的引用都不会改变我的引用的吧,只能改变我们都引用的内容。 |
7.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: jackyshen Posted on: 2005-10-18 16:57 引用是不是相当于指针?(地址) |
8.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: johnnyv_cn Posted on: 2005-10-20 21:53 class A{ int amount = 0; } class B{ //拿到A的实例a的地址。把地址烧了,绝交。并没有把a杀死。 public static void setNull(A a) { a = null; } //拿到A的实例a的地址;按照地址找到了a;赏了a一个大洋。 public static void setAmount(A a) { a.amount = 1; } public static void main(String[] args){ A a = new A(); setNull(a); System.out.println(a.amount); // 0 setAmount(a); System.out.println(a.amount); // 1 } } 通过new产生的对象本身是放在堆(heap)上的;a放在堆栈(stack)中,是对堆上的a对象的引用,并不是对象本身。setNull(a)中的a是该引用的值的拷贝(所谓的“按值传递”),并不是a对象本身。可以销毁该引用的值的拷贝,也可以通过该拷贝去调用对象的方法,从而改变对象的状态,但不能通过该拷贝销毁对象本身。 |
9.Re:值传递没有看懂 [Re: jackyshen] | Copy to clipboard |
Posted by: ranchgirl Posted on: 2005-10-21 11:52 jackyshen wrote: Yes, but it cannot be dereferenced, which differs from C. |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |