TIJ读书笔记03-初始化和构造器

body, td {
font-family: 微软雅黑;
font-size: 10pt;
}

  • TIJ读书笔记03-初始化和构造器

初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源.

构造器在创建一个类的实例的时候,由编译器去调用,构造器可以保证每个对象在可被用户操作前都正确的被初始化.
关于构造器有个问题,就是构造器应该叫什么名字.

  • 所有方法名都有可能和用户自定义函数名相冲突

  • 调用构造器是编译器的责任,那么必须要让编译器知道每个类的构造器的名字.

有两种办法来解决这两个问题:

  • 保留一个关键字做构造器的函数名. 比如python的做法,保留一个_init()方法用来做构造函数.

  • 构造器采用与类名相同的名称,像C++那样

java选择了第二种方式.为了表示构造器是一个特殊的方法,构造器是没有返回值的. 所以构造函数写出来就是这个样子

Person(){...}

java中创建对象的时候,需要使用new关键字. 比如new Person() 从概念上理解,一个对象的创建和初始化是两个独立的操作,但是java中把两者捆绑到了一起,不可分割.

因为构造器是用来做初始化的,那它没有必要返回任何东西.(那为什么不用void呢…返回值void,然后不接收不处理不就可以了. 个人理解没有返回值的作用还是用来区分构造函方法和其他方法. 让它显得更特殊一点) 忘了在哪儿看到的文档说构造方法其实返回了所创建对象的引用,但是TIJ上说new表达式返回所创建对象的引用. 感觉TIJ上说的更有道理,构造方法只是用来负责初始化, 内存分配和对象创建应该是new关键字完成的. 但是讨论这个是没有啥实际意义的,因为java中这两个操作是绑定到一起的.

%23TIJ%u8BFB%u4E66%u7B14%u8BB003-%u521D%u59CB%u5316%u548C%u6784%u9020%u5668%[email protected]%28034.java%29%5Bjava%7Cjava%u7F16%u7A0B%u601D%u60F3%5D%0A%0A%5Btoc%5D%0A%0A%u521D%u59CB%u5316%u548C%u6E05%u7406%u662F%u6D89%u53CA%u5B89%u5168%u7684%u4E24%u4E2A%u95EE%u9898%2C%u5982%u679C%u5BF9%u8C61%u4E0D%u80FD%u6B63%u786E%u7684%u521D%u59CB%u5316%u4F1A%u5F15%u8D77%u5F88%u591A%u9519%u8BEF%2C%u6BD4%u5982%u7A7A%u6307%u9488%u5F02%u5E38%u7B49%2C%u5982%u679C%u4E0D%u80FD%u6070%u5F53%u53CA%u65F6%u7684%u6E05%u7406%2C%u4F1A%u5360%u7528%u8FC7%u591A%u8D44%u6E90.%20%0A%0A%0A%u6784%u9020%u5668%u5728%u521B%u5EFA%u4E00%u4E2A%u7C7B%u7684%u5B9E%u4F8B%u7684%u65F6%u5019%2C%u7531%u7F16%u8BD1%u5668%u53BB%u8C03%u7528%2C%u6784%u9020%u5668%u53EF%u4EE5%u4FDD%u8BC1%u6BCF%u4E2A%u5BF9%u8C61%u5728%u53EF%u88AB%u7528%u6237%u64CD%u4F5C%u524D%u90FD%u6B63%u786E%u7684%u88AB%u521D%u59CB%u5316.%0A%u5173%u4E8E%u6784%u9020%u5668%u6709%u4E2A%u95EE%u9898%2C%u5C31%u662F%u6784%u9020%u5668%u5E94%u8BE5%u53EB%u4EC0%u4E48%u540D%u5B57.%20%0A-%20%u6240%u6709%u65B9%u6CD5%u540D%u90FD%u6709%u53EF%u80FD%u548C%u7528%u6237%u81EA%u5B9A%u4E49%u51FD%u6570%u540D%u76F8%u51B2%u7A81%0A-%20%u8C03%u7528%u6784%u9020%u5668%u662F%u7F16%u8BD1%u5668%u7684%u8D23%u4EFB%2C%u90A3%u4E48%u5FC5%u987B%u8981%u8BA9%u7F16%u8BD1%u5668%u77E5%u9053%u6BCF%u4E2A%u7C7B%u7684%u6784%u9020%u5668%u7684%u540D%u5B57.%20%0A%0A%u6709%u4E24%u79CD%u529E%u6CD5%u6765%u89E3%u51B3%u8FD9%u4E24%u4E2A%u95EE%u9898%3A%0A%0A-%20%u4FDD%u7559%u4E00%u4E2A%u5173%u952E%u5B57%u505A%u6784%u9020%u5668%u7684%u51FD%u6570%u540D.%20%u6BD4%u5982python%u7684%u505A%u6CD5%2C%u4FDD%u7559%u4E00%u4E2A_init%28%29%u65B9%u6CD5%u7528%u6765%u505A%u6784%u9020%u51FD%u6570.%20%0A-%20%u6784%u9020%u5668%u91C7%u7528%u4E0E%u7C7B%u540D%u76F8%u540C%u7684%u540D%u79F0%2C%u50CFC++%u90A3%u6837%0A%0Ajava%u9009%u62E9%u4E86%u7B2C%u4E8C%u79CD%u65B9%u5F0F.%u4E3A%u4E86%u8868%u793A%u6784%u9020%u5668%u662F%u4E00%u4E2A%u7279%u6B8A%u7684%u65B9%u6CD5%2C%u6784%u9020%u5668%u662F%u6CA1%u6709%u8FD4%u56DE%u503C%u7684.%20%u6240%u4EE5%u6784%u9020%u51FD%u6570%u5199%u51FA%u6765%u5C31%u662F%u8FD9%u4E2A%u6837%u5B50%0A%60%60%60java%0APerson%28%29%7B%0A...%0A%7D%0A%60%60%60%0A%0A%20java%u4E2D%u521B%u5EFA%u5BF9%u8C61%u7684%u65F6%u5019%2C%u9700%u8981%u4F7F%u7528new%u5173%u952E%u5B57.%20%u6BD4%u5982%60new%20Person%28%29%60%20%u4ECE%u6982%u5FF5%u4E0A%u7406%u89E3%2C%u4E00%u4E2A%u5BF9%u8C61%u7684%u521B%u5EFA%u548C%u521D%u59CB%u5316%u662F%u4E24%u4E2A%u72EC%u7ACB%u7684%u64CD%u4F5C%2C%u4F46%u662Fjava%u4E2D%u628A%u4E24%u8005%u6346%u7ED1%u5230%u4E86%u4E00%u8D77%2C%u4E0D%u53EF%u5206%u5272.%0A%0A%u56E0%u4E3A%u6784%u9020%u5668%u662F%u7528%u6765%u505A%u521D%u59CB%u5316%u7684%2C%u90A3%u5B83%u6CA1%u6709%u5FC5%u8981%u8FD4%u56DE%u4EFB%u4F55%u4E1C%u897F.%28%u90A3%u4E3A%u4EC0%u4E48%u4E0D%u7528void%u5462...%u8FD4%u56DE%u503Cvoid%2C%u7136%u540E%u4E0D%u63A5%u6536%u4E0D%u5904%u7406%u4E0D%u5C31%u53EF%u4EE5%u4E86.%20%u4E2A%u4EBA%u7406%u89E3%u6CA1%u6709%u8FD4%u56DE%u503C%u7684%u4F5C%u7528%u8FD8%u662F%u7528%u6765%u533A%u5206%u6784%u9020%u51FD%u65B9%u6CD5%u548C%u5176%u4ED6%u65B9%u6CD5.%20%u8BA9%u5B83%u663E%u5F97%u66F4%u7279%u6B8A%u4E00%u70B9%29%20%u5FD8%u4E86%u5728%u54EA%u513F%u770B%u5230%u7684%u6587%u6863%u8BF4%u6784%u9020%u65B9%u6CD5%u5176%u5B9E%u8FD4%u56DE%u4E86%u6240%u521B%u5EFA%u5BF9%u8C61%u7684%u5F15%u7528%2C%u4F46%u662FTIJ%u4E0A%u8BF4new%u8868%u8FBE%u5F0F%u8FD4%u56DE%u6240%u521B%u5EFA%u5BF9%u8C61%u7684%u5F15%u7528.%20%u611F%u89C9TIJ%u4E0A%u8BF4%u7684%u66F4%u6709%u9053%u7406%2C%u6784%u9020%u65B9%u6CD5%u53EA%u662F%u7528%u6765%u8D1F%u8D23%u521D%u59CB%u5316%2C%20%u5185%u5B58%u5206%u914D%u548C%u5BF9%u8C61%u521B%u5EFA%u5E94%u8BE5%u662Fnew%u5173%u952E%u5B57%u5B8C%u6210%u7684.%20%u4F46%u662F%u8BA8%u8BBA%u8FD9%u4E2A%u662F%u6CA1%u6709%u5565%u5B9E%u9645%u610F%u4E49%u7684%2C%u56E0%u4E3Ajava%u4E2D%u8FD9%u4E24%u4E2A%u64CD%u4F5C%u662F%u7ED1%u5B9A%u5230%u4E00%u8D77%u7684.%20%0A%0A%0A%0A%0A%0A

时间: 2024-08-06 02:43:03

TIJ读书笔记03-初始化和构造器的相关文章

TIJ读书笔记02-控制执行流程

body, td { font-family: 微软雅黑; font-size: 10pt; } TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决定程序的执行路径. 由于java中布尔类型的特殊实现,如果想在布尔测试中测试一个非布尔值,必须将其转换成布尔表达式. 也就是说像C和C++中的while(1)这种方式是不可以的. if-else if-el

TIJ读书笔记04-方法重载

body, td { font-family: 微软雅黑; font-size: 10pt; } Edit TIJ读书笔记05-this关键字 TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fun(1)如果按照更容易理解的角度来看的话,或许可以写成: Banana.fun(a,1)这样就更符合OOP的"发送消息给对象"的原则了. 但是ja

TIJ读书笔记06-终结清理和垃圾回收

body, td { font-family: 微软雅黑; font-size: 10pt; } TIJ读书笔记06-终结清理和垃圾回收 finalize()方法 垃圾回收器如何工作 java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java的垃圾回收回收的是什么? 垃圾回收器只释放那些由new分配的内存. 注意这个限制,jvm只负责回收内存,而且这部分内存是通过new关键字来创建的. 所以像什么数据库连接,IO等等是需要程序员去释放的.

《需求工程--软件建模与分析》读书笔记03

该笔记记录的是该书第二部分的确定项目的前景与范围这一部分. 开篇点题:一个项目开始之前,首先考虑的第一个问题------项目的目标是什么?   项目的目标就是系统的业务需求.在多数情况下需要进行一些分析工作才能得到系统的业务需求,为了得到业务需求,在简单情况下可以进行问题分析,复杂情况下考虑进行目标分析,必要时辅以业务过程分析.然后呢?---项目的打算做什么.业务需求.高层解决方案及系统特性都应该被记录下来,定义为项目前景与范围文档,这就包含了涉众.射中在现实世界中遇到问题时才会试图引入软件系统

构建之法读书笔记03

4.4代码复审 代码复审即看代码是否在“代码规范”的框架内正确地解决了问题.形式有:自我复审.同伴复审.团队复审.目的是:1.找出代码错误 2.发现逻辑错误 3.发现算法错误 4.发现潜在的错误和回归性错误 5.发现可能需要改进的地方 6.教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识.步骤:1.首先代码需要成功地编译 2.程序员必须测试过代码 3.程序员必须提供新的代码,以及文件差异分析工具.4.复审者可以选择面对面的复审.独立复审或其他

《最后期限》——读书笔记03

读完这本最后的期限,第一感觉就是对管理有了新的认识.书中所说的内容与我的日常生活有着特殊的共鸣.书中的汤普金斯先生本身就是一位优秀的管理者,他对管理的四个理念(人员的选择,任务的分配,激励团队,构建团队)的认识十分理性. 书中每一章都会有一些管理的先关知识被提出.从中我进行了一些摘录. 1.优质管理的四大要素:选正确的人.分配正确的工作.保持他们的积极性.帮助团队凝聚起来并保持凝聚力 2.除非感到安全,否则人们就不会去迎接新的变化.变化是所有成功的工程中最主要因素.而安全感的缺乏会使人们反对变化

机器学习读书笔记(开篇)

新近到手一本<机器学习实战>(Peter Harringtom),兴奋之余,本着好记性不如烂笔头的真理,打算将读书的过程记录下来,形成读书笔记,重点记录自己所理解的算法思想与应用示例.本人野生猿一枚,贻笑大方之处,敬请谅解. 机器学习可以揭示数据背后的真实含义,而数据以及基于数据做出的决策是非常重要的,机器学习的实现离不开数据挖掘算法,书中介绍了几个主要的算法,使用Python以及对应的科学计算包,如NumPy与SciPy等进行编程. 第一部分 分类 机器学习读书笔记01 机器学习基础 机器学

正面管教读书笔记 10 你的性格对孩子性格的影响

正面管教读书笔记 10 你的性格对孩子性格的影响 正面管教 作者:简·尼尔森(Jane Nelsen) 第10章 你的性格对孩子性格的影响 书中通过"生活态度取向",将我们分为:安逸型,控制型,取悦型,力争优秀型. 个人看法:这种分类并不专业.不正确,模棱两可比较多. 好的一方面,是从总体看(不要一个个看),还是一种举例的方式,描述正确的方向是什么. 四种生活态度取向 取向 最担心的 避免倾向 安逸 情感和生活的痛苦与压力:他人的期望:受人迫胁 追求安逸:寻求别人的关照:让别人感到舒适

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

REF设备 参考光栅设备,他能以软件计算方式完全支持Direct3D Api.借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试. D3DDEVTYPE 在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示.该值是一个枚举变量.REF设备用D3DDEVTYPE_REF来表示.这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型. COM(组件对象模型) 创建COM接口时不可以使用c++关键字new.此外使用完接口,应调用Rel