Java中 强调: 一切都是对象
尽管如此 但是操纵的标识符实际上是对象的一个引用 借用THINKING IN JAVA 书中的例子 :
对象作为电视机 引用就作为遥控器 只要握有这个遥控器 就可以保持与电视机的联系 当想改变频道时 实际上操纵的是遥控器,
再由遥控器来调控电视机(对象)
此外 ,引用也可以独立存在,如: String sl; 这里只是创建了引用 并不是对象
如何将引用和一个新的对象关联呢 用 new 关键字
比如: String s = new String("asdf");
还有一个重要的概念 ,Java 中所有的对象都要通过对象引用访问 也就是每个对象得存在一个引用
那么,对象 或 引用 存储在什么地方了呢 ?
首先,有五个不同的地方可以存储数据;
1)寄存器:它直接位于处理器内部 Java中不能直接控制寄存器
2)堆栈 :位于通用RAM(随机存储器)中,通过堆栈指针可以从处理器获得直接支持,堆栈指针向下移动,则分配新的内存,若向上移动,则释放内存,这样做十分高效。
但是创建程序时,Java系统必须知道堆栈中所有项的确切生命周期,这一约束限制了程序的灵活性。 基本类型和对象引用就存在其中,但Java对象除外。
3)堆 :一种通用的内存池(也位于RAM), 用于存放所有的Java对象 。缺点就是为了灵活性而增加了时间.
4)常量存储: 通常直接存在程序代码内部,这样做是安全的 ,因为它们永远不会被改变。
5)非RAM存储:两个基本的例子就是 流对象 和 持久化对象。流对象中,对象被转化为字节流; 持久化对象中,对象被存在与磁盘上,如数据库。
所以说对象引用是指向对象存储所在堆中的某个区域的指针