对象的理解一

1、永远不需要销毁对象
一、作用域(scope)
大多数过程型语言都有作用域的概念。作用域决定了在其内定义的变量名的可见性和生命周期。在C、C++和Java中,作用域由花括号的位置决定。在作用域里定义的变量只可用于作用域结束之前。
任何位于“//”之后到行末的文字都是注释。
缩排格式使Java代码更易于阅读。由于Java是一种自由格式的语言,所以,空格、制表符、换行都不会影响程序的执行效果。
尽管以下代码在C和C++中是合法的,但是在Java中却不能这样书写:
{
    int  x  =  12;
    {
        int  x  =  96;  //Illegal
    }
}
编译器将会报告变量X 已经定义过,所以,在C 和C ++ 里将一个较大作用域的变量 “隐藏” 起来的做法,在Java里是不允许的。
二、对象的作用域
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。所以假如你采用代码
{
    String  s  =  new  String("a string");
}
引用S 在作用域终点就消失了,然而,S 指向的String 对象仍继续占据内存空间。在这一小段代码中,我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已超出了作用域的范围。
事实证明,由new创建的对象,只要你需要,就会一直保留下去。
Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其他新的对象使用。也就是说,你根本不必担心内存回收的问题,你只需要创建对象,一旦不再需要,它们就会自行消失。这样做就消除了这类编程问题(即 “内存泄漏”),这是由于程序员忘记释放内存而产生的问题。

 

posted @ 2018-11-09 11:28  止水于石  阅读(93)  评论(0)    收藏  举报