1.10对象的创建和生命期
在使用对象时,最关键的问题之一便是它们的生成和销毁方式。每个对象为了生存都需要资源,尤其是内存。当我们不再需要一个对象时,它必须被清理掉,使其占有的资源可以被释放和重用。
对象的数据位于何处?怎样控制对象的生命周期?
C++认为效率控制是最重要的议题,所以给程序员提供了选择的权利。可以通过将对象置于堆栈(automatic variable)或限域变量(scoped variable)或静态存储区内来实现。这种方式将存储空间分配和释放置于有限考虑的位置,某些情况下这样的控制非常有价值。但是,也牺牲了灵活性。
第二种方式是在被成为堆(heap)的内存池中动态地创建对象。因为存储空间是在运行时被动态管理的,所以需要大量的时间在堆中分配存储空间,这可能要远远大于在堆栈重创建存储空间的时间。
动态方式有这样一个一般性的逻辑假设:对象趋向于变得复杂,所以查找和释放存储空间的开销不会对对象的差u你关键造成重大冲击。
Java完全采用了动态内存分配方式。
还有一个议题,就是对象生命周期。Java提供了被成为“垃圾回收器”的机制,它可以自动发现对象何时不再被使用,并继而销毁它。
1.11异常处理:处理错误
自从编程语言问世以来,错误处理就始终是最困难的问题之一。
异常是一种对象,他从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像是与程序正常执行路径并行的,在错误发生时执行的另一条路径,不会干扰正常的代码执行。异常不能被忽略,所以它保证一定会在某处得到处理。最后需要指出的是:异常提供了一种从错误状况进行可靠恢复的途径。
Java的异常处理在众多的变成语言重格外引人注目,因为Java一开始就内置了异常处理,而且强制你必须使用它。
1.12并发编程
在计算机编程重有一个基本概念,就是在同一时刻处理多个任务的思想。许多程序设计问题都要求,程序能够停下正在做的工作,转而处理某个其他问题,然后再返回主进程。
大部分情况下:我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的相应能力。在程序中,这写彼此多里运行的部分称之为线程,上述概念被称为“并发”。
在语言级别上,多线程所带来的便利之一便是车个你许愿不用再操心机器上是有多个处理器还是只有一个处理器。由于程序在逻辑上被分为线程,所以如果机器拥有多个处理器,那么程序不需要特殊调整也能执行的更快。
所有这些都使得并发看起来相当简单,但是有一个隐患:共享资源。为了解决资源的共享问题:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。
Java的并发是内置于语言中的,Java SE5已经增添了大量额外的库支持。
本文首发于:对象导论笔记-第五天-蜘蛛网间
分享到:
相关推荐
算法导论----算法经典书籍----不用我多做介绍了吧。算法导论----算法经典书籍----不用我多做介绍了吧。
人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能导论王万良-测试答案人工智能...
C语言--程序设计导论 C语言--程序设计导论
计算机科学导论--------思想与方法 董荣胜(课件&课后习题答案)
计算机算法导论--教师手册 英文原版 计算机专业必读书
算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar算法导论课件-经典.rar
计算机科学导论1-5答案 计算机科学导论 大一 网工 答案
自己的学习笔记资料整理,根据自己的考试重点来的。
信息安全导论-第五章身份认证 信息安全导论-第五章身份认证
人工智能导论作业-用 PyTorch 实现的中文文本情感分类网络机器学习期末作业.zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。...
算法导论--编程中经典的经典,值得每一位程序员用心品读
华中科技大学--法学导论--期末复习资料
算法导论第三版练习题15.2-2的C++实现方案
这是算法导论第二版后面的8.3-4习题答案,整理过后的
导论--电子信息科学技术概述.pptx
用于16学时,计算机科学与技术专业的学科导论。第五讲,计算机科学体系,介绍计算机科学体系与学科方法等。
计算机导论--实验5.zip
大众媒介研究导论笔记
计算机科学导论--练习题-汇总.docx
深圳大学-计算机导论--raptor实验.docx