Effective Java 读书笔记之七 通用程序设计
一、将局部变量的作用域最小化
1、在第一次使用变量的地方声明
2、几乎每个变量的声明都应该包含一个初始化表达式:try-catch语句是一个例外
3、使方法小而集中是一个好的策略
二、for-each循环优先于传统的for循环
1、for-each循环在简洁性和预防bug方面有着传统的for循环无法比拟的优势,而且没有性能损失。
2、三种不能使用for-each循环的情况:
a、过滤:需要显式的迭代器的remove方法
b、转换:需要显式的迭代器或数组索引,以便设定值
c、平行迭代:多个相关集合同步移动。
三、了解和使用类库
1、使用类库就是站在了巨人的肩膀上
四、如果需要精确的答案,请避免使用float和double
1、float和double类型是为了快速计算而设计的,并不精确。尤其不能由于货币的计算,使用BigDecimal、int或者long代替。
2、int可9位数字,long可18位数字,其他必须用BigDecimal类型。
五、基本类型优先于装箱基本类型
1、基本类型和装箱基本类型之间的三个主要区别:
a、基本类型只有值
b、基本类型只有功能完备的值,装箱类型还有非功能值:null。
c、基本类型节省时间和空间。
2、不能忽略基本类型和装箱类型的区别,特别是在面对各种运算符时。
六、如果其他类型更适合,就尽量避免使用字符串
1、字符串不适合代替其他的值类型:读取输入后应尽快完成转换工作。
2、字符串不适合代替枚举类型
3、字符串不适合代替能力表
七、当心字符串连接的性能
1、由于String类的不可变性,连接操作符的效率不高。可使用StringBuilder类或字符数组。
八、通过接口引用对象
1、优先使用接口而不是类来引用对象。
2、没有接口可用的情况下,考虑抽象基类。
九、接口优先于反射机制
1、反射机制的缺陷
a、丧失了编译时类型检查的好处
b、执行反射访问所需要的代码非常笨拙和冗长。
c、性能损失
2、一般只有类必须和编译时未知的类一起工作时才需要反射。只用来实例化对象,访问对象最好还是采用接口或者超类。
十、谨慎地使用本地方法
1、本地方法的三个主要用途
a、提供了“访问特定于平台的机制”的能力
b、访问遗留代码库的能力
c、提高系统性能
2、随着Java平台的不断成熟,需要本地方法的地方越来越少了。
十一、谨慎地进行优化
1、不要进行优化
2、要努力编写结构好的程序而不是快的程序。
3、依靠性能剖析工具来评估程序的性能,任何预测都是靠不住的。
十二、遵守普遍接受的命名惯例
Effective Java 读书笔记之七 通用程序设计的更多相关文章
- Effective java读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...
- Effective Java读书笔记完结啦
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...
- Effective Java 读书笔记
创建和销毁对象 >考虑用静态工厂方法替代构造器. 优点: ●优势在于有名称. ●不必再每次调用他们的时候都创建一个新的对象. ●可以返回原返回类型的任何子类型的对象. ●在创建参数化类型实例的时 ...
- Effective Java 读书笔记(一):使用静态工厂方法代替构造器
这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文&l ...
- [Effective Java 读书笔记] 第8章 通用程序设计
本章主要讲了以下几条基本的JAVA编程原则: 1.将局部变量的作用域控制在最小,在使用时才定义 2.for-each优于for循环 有三个例外(1,2点主旨就是,for each只能用于读取,不能用于 ...
- Effective Java读书笔记——第三章 对于全部对象都通用的方法
第8条:覆盖equals时请遵守通用的约定 设计Object类的目的就是用来覆盖的,它全部的非final方法都是用来被覆盖的(equals.hashcode.clone.finalize)都有通用约定 ...
- [Effective Java 读书笔记] 第三章 对所有对象都通用的方法 第八 ---- 九条
这一章主要讲解Object类中的方法, Object类是所有类的父类,所以它的方法也称得上是所有对象都通用的方法 第八条 覆盖equals时需要遵守的约定 Object中的equals实现,就是直接对 ...
- Effective Java读书笔记--对所有对象都通用的方法
1.覆盖equals请遵守通用规定.不需要覆写equals的场景:a.类的每个实例都是唯一的.b.类不需要提供"逻辑相等"的测试功能.c.超类已经覆盖了equals的方法.d.类是 ...
- Effective Java 读书笔记之二 对于所有对象都通用的方法
尽管Object是一个具体的类,但设计它主要是为了扩展.它的所有非final方法都有明确的通用约定.任何一个类在override时,必须遵守这些通用约定. 一.覆盖equals时请遵守通用的约定 1. ...
随机推荐
- nginx https性能优化
影响HTTPS速度的主要原因:秘钥交换算法 常见的密钥交换算法有 RSA,ECDHE,DH,DHE 等算法.它们的特性如下: RSA:算法实现简单,诞生于 1977 年,历史悠久,经过了长时间的破解测 ...
- kail2 linux 安装vmware tools
kali进去后,安装vmtools有点蛋疼,中途会问你要编译内核模块所需要的内核头文件,但是没有默认安装的.安装headers时又因为没有源下载不了,所以我们要做一些准备工作. 首先打开shell,我 ...
- Java http方式提交短信到短信网关
URL url = new URL("短信网关url"); 一般短信内容需要用URLEncoder.encode()编码一下 HttpURLConnection httpCon = ...
- Java 6.15习题
1.定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类 ...
- python中的not具体使用及意思
python中的not具体使用及意思 name='' while not name: name=raw_input(u'请输入姓名:') print name python中的not具体表示是什么: ...
- 英文论文中i.e.,e.g.,etc.,viz.的简要小结
英文论文中i.e.,e.g.,etc.,viz.的简要小结 看了一堆用法,全白扯,自己总结的最好记,最实用 i.e. =即.换句话说.也就是说."'In essence' or 'in ot ...
- FCC上的初级算法题
核心提示:FCC的算法题一共16道.跟之前简单到令人发指的基础题目相比,难度是上了一个台阶.主要涉及初步的字符串,数组等运算.仍然属于基础的基础,官方网站给出的建议完成时间为50小时,超出了之前所有非 ...
- CMAKE使用
http://www.cppblog.com/tx7do/archive/2010/08/19/124000.html http://blog.csdn.net/dbzhang800/article/ ...
- ecshop新增一个编辑器
在ecshop的后台新增一个编辑器框 步骤一:找到lib_main.php 文件:admin/includes/lib_main.php. 找到变量:function create_html_edit ...
- Linux环境下常用软件(个人笔记编辑更改中)
近期使用CentOS,就在这里记录一下.首先,个人版本是CentOS6.5,属于centos系列,Fedora系列的理论上也可以用. 工欲善其事,必先利其器,这里介绍我的软件包配置: 1.vim(增强 ...