对象的作用域
来源:互联网 发布:lolypop女装淘宝网 编辑:程序博客网 时间:2024/06/06 21:55
Java 对象不具备与主类型一样的存在时间。用new 关键字创建一个Java 对象的时候,它会超出作用域的范
围之外。所以假若使用下面这段代码:
{
String s = new String("a string");
} /* 作用域的终点 */
那么句柄s会在作用域的终点处消失。然而,s指向的String对象依然占据着内存空间。在上面这段代码
里,我们没有办法访问对象,因为指向它的唯一一个句柄已超出了作用域的边界。在后面的章节里,大家还
会继续学习如何在程序运行期间传递和复制对象句柄。
这样造成的结果便是:对于用new 创建的对象,只要我们愿意,它们就会一直保留下去。这个编程问题在C
和C++里特别突出。看来在C++里遇到的麻烦最大:由于不能从语言获得任何帮助,所以在需要对象的时候,
根本无法确定它们是否可用。而且更麻烦的是,在 C++里,一旦工作完成,必须保证将对象清除。
这样便带来了一个有趣的问题。假如Java 让对象依然故我,怎样才能防止它们大量充斥内存,并最终造成程
序的“凝固”呢。在C++里,这个问题最令程序员头痛。但 Java 以后,情况却发生了改观。Java 有一个特别
的“垃圾收集器”,它会查找用new创建的所有对象,并辨别其中哪些不再被引用。随后,它会自动释放由
那些闲置对象占据的内存,以便能由新对象使用。这意味着我们根本不必操心内存的回收问题。只需简单地
创建对象,一旦不再需要它们,它们就会自动离去。这样做可防止在C++里很常见的一个编程问题:由于程
序员忘记释放内存造成的“内存溢出”。
围之外。所以假若使用下面这段代码:
{
String s = new String("a string");
} /* 作用域的终点 */
那么句柄s会在作用域的终点处消失。然而,s指向的String对象依然占据着内存空间。在上面这段代码
里,我们没有办法访问对象,因为指向它的唯一一个句柄已超出了作用域的边界。在后面的章节里,大家还
会继续学习如何在程序运行期间传递和复制对象句柄。
这样造成的结果便是:对于用new 创建的对象,只要我们愿意,它们就会一直保留下去。这个编程问题在C
和C++里特别突出。看来在C++里遇到的麻烦最大:由于不能从语言获得任何帮助,所以在需要对象的时候,
根本无法确定它们是否可用。而且更麻烦的是,在 C++里,一旦工作完成,必须保证将对象清除。
这样便带来了一个有趣的问题。假如Java 让对象依然故我,怎样才能防止它们大量充斥内存,并最终造成程
序的“凝固”呢。在C++里,这个问题最令程序员头痛。但 Java 以后,情况却发生了改观。Java 有一个特别
的“垃圾收集器”,它会查找用new创建的所有对象,并辨别其中哪些不再被引用。随后,它会自动释放由
那些闲置对象占据的内存,以便能由新对象使用。这意味着我们根本不必操心内存的回收问题。只需简单地
创建对象,一旦不再需要它们,它们就会自动离去。这样做可防止在C++里很常见的一个编程问题:由于程
序员忘记释放内存造成的“内存溢出”。
- 对象的作用域
- 对象的作用域
- 对象的作用域
- Spring对象的作用域
- java对象的作用域
- java对象的作用域
- 对象的作用域,对象方法扩展
- 面向对象的 Javascript 作用域
- Java对象的生命周期与作用域
- 对象的可见性和作用域
- jsp的九大隐式对象及其作用域
- 四种对象的作用域
- jsp的九大隐式对象及其作用域
- jsp的四大作用域,九大隐式对象
- JavaScript的作用域和变量对象
- jsp的九大隐式对象及其作用域
- jsp 四大对象的作用域
- jsp的九大隐式对象及其作用域
- 两个月的编程教会我很多
- HDU 4717 The Moving Points
- 钽电容规格定义
- 备忘
- ASLR/DEP绕过技术概览
- 对象的作用域
- HDU 4722 Good Numbers
- 如何开启MySQL慢查询日志
- JS获取字符串长度(一个汉字视为2个单位长度)
- nvalid command 'PythonPath', perhaps misspelled or defined by a module not included in the server co
- Extjs Cookie
- Android 系统中使用GDB调试C程序
- 线程同步
- SPOJ GSS3 Can you answer these queries III