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

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

  • 所有方法名都有可能和用户自定义函数名相冲突
  • 调用构造器是编译器的责任,那么必须要让编译器知道每个类的构造器的名字.

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

  • 保留一个关键字做构造器的函数名. 比如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%0A@%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

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

  1. TIJ读书笔记08-数组的初始化和可变长参数形参

    TIJ读书笔记08-数组的初始化和可变参数形参 数组 数组的声明 数组的初始化和赋值 可变参数列表 数组 相同类型的,用一个标识符名称封装到一起的一个对象序列或者基本数据类型序列叫数组.(多么严谨的概 ...

  2. TIJ读书笔记04-方法重载

    TIJ读书笔记04-方法重载 为什么会有方法重载 方法签名 如何区分重载 关于基本类型的重载 为什么会有方法重载 OOP的编程方式就是让程序的逻辑更加接近现实世界的逻辑. 而在现实世界中,自然语言本身 ...

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

      TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决 ...

  4. TIJ读书笔记01-操作符

      TIJ读书笔记01-操作符 概述 关系操作符和逻辑操作符 位操作符 类型转换 概述 操作符 操作符接受一个或多个参数,并生成一个新值. 换句话说操作符作用于操作数,生成一个新值.有些操作符会改变操 ...

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

    TIJ读书笔记06-终结清理和垃圾回收 finalize()方法 垃圾回收器如何工作 java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java ...

  6. TIJ读书笔记05-this关键字

    TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...

  7. pancake的排序- 1.3 一摞烙饼的排序 《编程之美》读书笔记03

    问题:     星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼.店里的饼大小不一, ...

  8. TIJ读书笔记-第21章-并发

    一本Think in java,从去年6月份开始读,读了快一年了,也快读完了,然而回头想想,却好像什么也不记得了,好记性不如烂笔头,那就从现在开始记录一下吧.由于现在在读的是并发,那就先从这章开始吧. ...

  9. 《The Linux Command Line》 读书笔记03 ls命令与长格式输出解释 文件权限

    ls命令与长格式输出解释 文件权限 ls命令 ls 命令用于列出目录内容,不带参数时列出当前工作目录的内容,也可以指定目标目录(可以指定多个),列出目标目录下的内容. ls命令的参数 ls -l 长格 ...

随机推荐

  1. SparseArray具体解释,我说SparseArray,你说要!

    可能在Android 中使用HashMap 的时候看到过提示. HashMap<Integer,Bitmap> mp = new HashMap<Integer,Bitmap> ...

  2. Eclipse 内置浏览器

    Web 浏览器 Eclipse 系统内部自带了浏览器,该浏览器可以通过点击 Window 菜单并选择 Show View > Other,在弹出来的对话框的搜索栏中输入 "browse ...

  3. CentOS 6.5 安装Gitlab 7.12.2

    官网环境要求 参见:https://github.com/gitlabhq/gitlabhq GitLab is a Ruby on Rails application that runs on th ...

  4. 黑马day11 事务的四大特性

    1.事务的四大特性:一个事务具有的最主要的特性.一个设计良好的数据库能够为我们保证这四大特性. 1.1原子性:原子性是指事务是一个不可切割的工作单位,事务中的操作要么都发生要么都不发生. 1.2一致性 ...

  5. WCF服务寄宿IIS与Windows服务

      WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的 ...

  6. 各种流程图的绘画网路工具 processon

    https://www.processon.com 对应的网址,类似在线viso 很方便使用,工具齐全,推荐使用!

  7. ipod锁定后的恢复

    1.断开 USB 线缆与设备的连接,但保持线缆的另一端与电脑的 USB 端口相连. 2.关闭设备:按住“睡眠/唤醒”按钮数秒,直到出现红色滑块,然后滑动该滑块.等待设备关闭. 3.按住主屏幕按钮,同时 ...

  8. Android OpenCV图像转换

    1.Mat存储到本地: public void saveMatData(Mat mat) { File fileDir = new File(Environment.getExternalStorag ...

  9. Oracle注入速查表

    注:下面的一部分查询只能由admin执行,我会在查询的末尾以"-priv“标注. 探测版本: SELECT banner FROM v$version WHERE banner LIKE ‘ ...

  10. 【BZOJ2298】[HAOI2011]problem a DP

    [BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...