一切都是对象
用引用操作对象
操作的标识符实际上是对象一个"引用"(reference)。
将这一情形想象成用遥控器(引用)来操纵电视机(电视)。
即使没有电视机,遥控器也可独立存在,你拥有一个引用,并一定需要有一个对象与它关联。因此,如果想操纵一个词或句子,则可以创建一个String引用:
String s;
但这里创建的只是引用,并不是对象。如果此时向s发送一个消息,就会返回一个运行时错误。这是因为此时s实际上没有与如何事物相关联(即,没有电视机)。因此,一种安全的做法时:创建一个引用的同时便进行初始化。
String s =“asdf”;
必须由你创建所有对象
一旦创建一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现这一目的。new关键字的意思是“给我一个新对象。”
String s = new String("asdf")
存储到什么地方?
1)寄存器
最快的存储区,它位于处理器内部
2)堆栈
位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存,若向上移动,则释放那些内存,这是一种快速有效的分配方法,仅次于寄存器。堆栈对象的引用存储其中
3)堆
一种通用的内存池(也位于RAM区),用于存放所有的Java对象。
4)常量存储
常量值通常直接存放再程序代码内部,这样做是最安全的。
5)非RAM存储
永远不需要销毁对象
由new创建的对象,只要你需要,就会一直保留下去
怎么样防止这些对象填满内存空间?
Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象,随后,释放这些对象的内存空间,以便供其他新的对象使用。也就是说,你只需要创建对象,一旦不再需要,它们就会自行消失