在Java程序中,这个作用域外的对象最终有两个去向。首先,可以通过复制或者传递,在作用域外部仍然可以访问这个对象。其次,就是销毁对象。不过我们不用通过代码来销毁这个以前创建的对象。因为在Java语言中有一种叫做垃圾回收器的处理机制,其可以用来动态监视New关键字创建的所有对象,并根据一定的规则来判断哪些对象不会再被引用。如果其判断某个对象不再被引用话,则会自动释放这些对象所占用的内存空间,以供其他新的对象所使用。我们程序开发人员只管创建对象即可,而不用去担心什么时候去销毁对象。为此,这就可以消除C++语言面临的内存溢出问题。这个内存溢出问题就是因为程序开发人员用完对象后忘记销毁所造成的。

    由于在Java程序开发中,我们开发人员不用关心对象的销毁问题,为此可以更多的精力放在代码的优化上。而不像C++语言那样,要把这个对象销毁问题当作头件大事来对待。虽然如此,不过Java程序员也不能够掉以轻心。特别是当我们在离开某个作用域后还需要访问这个对象的时候,一定要记得通过复制或者传递等手段把对象引用传递给其他作用域。否则的话,即使这个对象没有消亡,还实际存储在内存中,但是也会因为缺少了引用而无法访问他们。为此在跨作用域引用对象的时候,这个引用的复制与传递千万不能够忘了。

    如果不幸忘了的话,那么在作用域外的代码就无法再访问这个对象。不过这个对象在一定时候会被垃圾回收器回收了。被释放了的内存空间就可以被重复使用,从而防止内存溢出的问题发生。

    总之,当Java程序员在开发应用程序的时候,这个Java对象与Java变量作用域的差异,以及Java对象与其他语言对象作用域的差异,一定要了然于胸。这有助于Java程序员能够更好的利用这个Java对象。另外笔者不厌其烦的再强调一遍,默认情况下脱离了某个作用域之后,对象就失去了引用无法访问。如果要在作用域再访问这个对象的时候,则需要及时把这个引用复制或者传递出来。否则的话,作用域外的代码是无法再操作这个对象。

转载:http://www.educity.cn/it/sun/200906011459191199.htm