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