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%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-初始化和构造器的更多相关文章
- TIJ读书笔记08-数组的初始化和可变长参数形参
TIJ读书笔记08-数组的初始化和可变参数形参 数组 数组的声明 数组的初始化和赋值 可变参数列表 数组 相同类型的,用一个标识符名称封装到一起的一个对象序列或者基本数据类型序列叫数组.(多么严谨的概 ...
- TIJ读书笔记04-方法重载
TIJ读书笔记04-方法重载 为什么会有方法重载 方法签名 如何区分重载 关于基本类型的重载 为什么会有方法重载 OOP的编程方式就是让程序的逻辑更加接近现实世界的逻辑. 而在现实世界中,自然语言本身 ...
- TIJ读书笔记02-控制执行流程
TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决 ...
- TIJ读书笔记01-操作符
TIJ读书笔记01-操作符 概述 关系操作符和逻辑操作符 位操作符 类型转换 概述 操作符 操作符接受一个或多个参数,并生成一个新值. 换句话说操作符作用于操作数,生成一个新值.有些操作符会改变操 ...
- TIJ读书笔记06-终结清理和垃圾回收
TIJ读书笔记06-终结清理和垃圾回收 finalize()方法 垃圾回收器如何工作 java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java ...
- TIJ读书笔记05-this关键字
TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...
- pancake的排序- 1.3 一摞烙饼的排序 《编程之美》读书笔记03
问题: 星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼.店里的饼大小不一, ...
- TIJ读书笔记-第21章-并发
一本Think in java,从去年6月份开始读,读了快一年了,也快读完了,然而回头想想,却好像什么也不记得了,好记性不如烂笔头,那就从现在开始记录一下吧.由于现在在读的是并发,那就先从这章开始吧. ...
- 《The Linux Command Line》 读书笔记03 ls命令与长格式输出解释 文件权限
ls命令与长格式输出解释 文件权限 ls命令 ls 命令用于列出目录内容,不带参数时列出当前工作目录的内容,也可以指定目标目录(可以指定多个),列出目标目录下的内容. ls命令的参数 ls -l 长格 ...
随机推荐
- 24模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存)
[root@lb04 scripts]# cat ha_lv.sh #!/bin/bash while true do check_count=$(nmap 10.0.0.13|grep " ...
- Android Studio--NDK编译C代码为.so文件,JNI调用
前言: 从Android Studio开始,就支持jni和.so库调用了. 环境: Windows 7+Android Studio2.1.2+NDK版本:android-ndk-r10e 准备工作: ...
- Spring帖子汇总
SpringMVC表单标签简介 http://haohaoxuexi.iteye.com/blog/1807330 Spring MVC 教程,快速入门,深入分析 http://elf8848.ite ...
- repaint和reflow的相关知识
一个页面由两部分组成: DOM:描述该页面的结构 render渲染:描述 DOM 节点 (nodes) 在页面上如何呈现 repaint重绘: 当 DOM 元素的属性发生变化 (如 color) 时, ...
- JavaScript 对大小写敏感。
JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getElementbyID 是不同的. 同样,变 ...
- MySQL设计之三范式
网上查找了一些资料,记录如下并加入自己的理解. 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有 ...
- SQL2008删除大量数据
常见问题:工作中数据库难免产生大量的日志,而用户可能关心的只有最近一个月左右的,这些日志占用了服务器磁盘,还可能影响了服务运行效率.甚至在数据库迁移时更因为体积而带来巨大麻烦. 那么,在需要时,删除不 ...
- ios关于数据的存储
本文转载至http://blog.csdn.net/chen505358119/article/details/9278539 这里我总结了一下数据的存储方式,一是保存在沙盒里 ...
- python redis操作
import redis r = redis.Redis( host='1xx.x24.3xx.x0', #ip, password='xnxnxn&*',#密码 port=6379, #端口 ...
- 41、Android中当数据库需要更新时我们该怎么办?
转载 http://blog.csdn.net/jiangwei0910410003/article/details/39670813