日期:2014-05-20  浏览次数:20676 次

有关object
对数据的操作有value和reference两种,为什么object用的是reference而不是value?

------解决方案--------------------
up
------解决方案--------------------
up(转)
------解决方案--------------------
这个问题说起来很复杂的,因为要站在java开发人员的角度,但是我也不知道他们是怎么想的,呵呵!

------解决方案--------------------
晕 白看啦! 没得人回答
------解决方案--------------------
Object是一个类,难道还要像一个int一样当作value来处理.
------解决方案--------------------
举个反例,如果是个Collection,它传值是什么呢?
基本类型传值才有意义~
------解决方案--------------------
规则就是人家定的,别人想怎么玩就怎么玩
------解决方案--------------------
首先,你要了解JAVA的数据类型在JVM中的工作机制,对于基本数据类型byte,int,short,long,char,boolean,float,double来说,它们占用的空间比较少,所以可以直接放在内存的栈中,而这时,比如传递一个boolean类型的变量,就是值传递,这样调用时效率就很高,但对于对象类型来说由于对象占用的空间比较大,所以一个对象的实例一般是放在堆中的(this对象除外),而在传递时到底是值传递还是引用传递,现在还是有争议的,一般都认为是引用传递,不过我比较认同的是另一种说法,也就是传递对象的时候,还是值传递,不过传递的值不是对象本身,而是对象引用的副本
------解决方案--------------------
栈和堆

Java就是这样设计的, 没什么可说...
------解决方案--------------------
在JAVA中,对象所占的空间存放在堆中,而对象的引用存放在堆栈中,堆栈中的引用指向堆中的对象,并通过引用对对象实体进行操作。这么做有很多的理由,JVM就是通过这种机制管理内存的分配和回收。
------解决方案--------------------
我认为Java中是按reference来引用的,你看,引用这个词,本身就是reference
但是,引用本身不是对象,它只是指向一个堆中的变量,只是一个引用,就好比C/C++中
的指针,只是指向对象而已,也可以指向别的对象,我接下来说个例子