学习是一种信仰。
分类: Java
2014-01-23 08:52:59
1、在Java这个充满Object的世界中,reference是一切谜题的根源,所有的故事都是从这里开始的。
2、《More Effective C++》说到:
没有null reference,reference必须有初值。----若reference一个pointer,pointer为null时,reference也为null了;
使用reference要比使用指针效率高。因为reference不需要测试其有效性。指针可以重新赋值,而reference总是指向它最初获得的对象。
设计选择:当你指向你需要指向的某个东西,而且绝不会改指向其它东西,或是当你重载一个运算符而其语法需要无法有指针达成,你就应该选择reference。其它任何时候,请采用指针。
3、在Java中,与C++不同,reference 可以随心所欲的赋值置空,对比一下上面列出的差异,就不难发现,Java的reference如果要与C/C++对应,它不过是一个穿着 reference外衣的指针而已。于是,所有关于C中关于指针的理解方式,可以照搬到Java中。简而言之,reference就是一个地址。我们可以把它想象成一个把手,抓住它,就抓住了我们想要操纵的数据。如同掌握C的关键在于掌握指针,探索Java的钥匙就是reference。
4、同C/C++相比,Java在changeReference中对reference赋值可能并不会造成什么很严重的后果,而在C/C++中,这么做却会造成臭名昭著的“内存泄漏”,根本的原因在于Java拥有了可爱的GC功能。