1.10对象的创建和生命期
在使用对象时,最关键的问题之一便是它们的生成和销毁方式。每个对象为了生存都需要资源,尤其是内存。当我们不再需要一个对象时,它必须被清理掉,使其占有的资源可以被释放和重用。
对象的数据位于何处?怎样控制对象的生命周期?
C++认为效率控制是最重要的议题,所以给程序员提供了选择的权利。可以通过将对象置于堆栈(automatic variable)或限域变量(scoped variable)或静态存储区内来实现。这种方式将存储空间分配和释放置于有限考虑的位置,某些情况下这样的控制非常有价值。但是,也牺牲了灵活性。
第二种方式是在被成为堆(heap)的内存池中动态地创建对象。因为存储空间是在运行时被动态管理的,所以需要大量的时间在堆中分配存储空间,这可能要远远大于在堆栈重创建存储空间的时间。
动态方式有这样一个一般性的逻辑假设:对象趋向于变得复杂,所以查找和释放存储空间的开销不会对对象的差u你关键造成重大冲击。
Java完全采用了动态内存分配方式。
还有一个议题,就是对象生命周期。Java提供了被成为“垃圾回收器”的机制,它可以自动发现对象何时不再被使用,并继而销毁它。
1.11异常处理:处理错误
自从编程语言问世以来,错误处理就始终是最困难的问题之一。
异常是一种对象,他从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像是与程序正常执行路径并行的,在错误发生时执行的另一条路径,不会干扰正常的代码执行。异常不能被忽略,所以它保证一定会在某处得到处理。最后需要指出的是:异常提供了一种从错误状况进行可靠恢复的途径。
Java的异常处理在众多的变成语言重格外引人注目,因为Java一开始就内置了异常处理,而且强制你必须使用它。
1.12并发编程
在计算机编程重有一个基本概念,就是在同一时刻处理多个任务的思想。许多程序设计问题都要求,程序能够停下正在做的工作,转而处理某个其他问题,然后再返回主进程。
大部分情况下:我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的相应能力。在程序中,这写彼此多里运行的部分称之为线程,上述概念被称为“并发”。
在语言级别上,多线程所带来的便利之一便是车个你许愿不用再操心机器上是有多个处理器还是只有一个处理器。由于程序在逻辑上被分为线程,所以如果机器拥有多个处理器,那么程序不需要特殊调整也能执行的更快。
所有这些都使得并发看起来相当简单,但是有一个隐患:共享资源。为了解决资源的共享问题:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。
Java的并发是内置于语言中的,Java SE5已经增添了大量额外的库支持。
本文首发于:对象导论笔记-第五天-蜘蛛网间
分享到:
相关推荐
C语言学习导论-笔记-C语言学习
《人工智能导论》是深入理解和掌握人工智能核心概念与技术的重要教材。这门学科的起源可以追溯到1956年,由斯坦福大学教授约翰·麦卡锡在一次学术会议上首次提出“人工智能”这一概念,标志着AI作为一个独立学科的...
算法导论第三版练习题15.2-2的C++实现方案
人工智能导论作业-用 PyTorch 实现的中文文本情感分类网络机器学习期末作业.zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。...
算法导论--编程中经典的经典,值得每一位程序员用心品读
Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...
机器学习导论作业-基于matlab实现三层卷积神经网络实现手写数字识别源码.zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答...
《地理信息系统导论--陈建飞》是一本深入探讨GIS技术的专业著作,旨在为读者提供全面的GIS理论知识和实践应用。GIS,全称为Geographic Information System,它整合了多种科学领域,包括计算机科学、信息科学、测绘...
5. **数组与字符串** - 数组:一组相同类型的元素集合,可以通过索引访问。 - 字符数组:用于存储字符串,C语言中的字符串是以'\0'结束的字符数组。 - 字符串处理函数:如strlen()、strcpy()、strcat()等,提供对...
计算机导论--实验5.zip
第五讲“计算机科学体系”是这一课程的重要组成部分,它深入探讨了计算机科学的架构和核心概念,帮助学生理解这一领域的基本框架和研究方法。 在计算机科学体系中,我们首先会接触到的是计算理论。计算理论是计算机...
耶鲁大学开放课程-心理学导论笔记 本课程笔记是耶鲁大学心理学导论课程的讲义,适合初学者学习心理学。课程涵盖了心理学的多个方面,包括神经科学、发展心理学、认知心理学、社会心理学和临床心理学等。 第一节课...
第五至第八章涵盖了各种排序算法,包括堆排序(Heapsort)、快速排序(Quicksort)、线性时间排序算法等。这些章节不仅详细解释了每种排序算法的工作原理,还讨论了它们的效率和适用场景,使学生能够根据具体需求...
工程导论--项目开发方案.pdf
软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统...
软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程...
NLP导论作业-句法分析器+数据+源代码+文档说明(高分项目),含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业...
物联网导论--第1章31.pptx
这份"算法导论授课教案学习笔记"是针对该书的深入学习资源,包括了教学教案、课后作业及解答,对于正在学习算法的学生来说,无疑是一份极其宝贵的参考资料。 教程部分可能涵盖以下知识点: 1. **算法基础**:介绍...