Effective Java (第八章-通用程序设计)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BlueSky003/article/details/80990240

第 45 条:将局部变量的作用域最小化

1、循环终止不在需要循环变量的内容,for 循环优于 while 循环。

第 46 条:for-each 循环优于传统的 for 循环

1、三种情况无法使用 for-each 循环。(过滤,遍历删除选定元素、转换,遍历替代选定元素、平行迭代,并行遍历多个集合需要显示地控制迭代器或者索引变量)

第 47 条:了解和使用类库

第 48 条:如果需要精确的答案,请避免使用 float 和 double

1、使用 BigDecimal、int、long 进行货币计算。
2、BigDecimal 缺点,使用不方便而且很慢,优点有舍入行为方便。
3、数值范围不超过 9 位的十进制数,可以使用 int,不超过 18 位数字,可以使用 long。

第 49 条:基本数据类型优先于装箱基本类型

区别:
1、基本类型只有值,装箱基本类型有值和不同的同一性。
2、装箱基本类型可以为 null 。
3、基本类型更节省时间和空间。

注意:
1、Comparator 比较时先转为基本数据类型。
2、比较时使用装箱基本类型可能为 NullPointerException。
3、大量叠加运算使用装箱基本类型速度慢。

使用装箱基本类型
1、作为集合中的元素、键和值,使用装箱基本类型。
2、泛化类型中,使用装箱基本类型。
3、反射的方法调用时,使用装箱基本类型。

扫描二维码关注公众号,回复: 5063312 查看本文章

第 50 条:如果其他类型更合适,则尽量避免使用字符串

1、字符串不适合代替其他的值类型。如是数值应转换为适当的数值类型。
2、字符串不合适代替枚举类型。枚举类型比字符串更适合用来表示枚举类型的常量。
3、字符串不合适代替聚集类型。如 String key = name + “#” + age 。
4、字符串不适合代替能力表。通过将 ThreadLocal 类型泛化,使这个 API 变为类型安全。

第 51 条:当心字符串连接的性能

1、使用 StringBuilder 字符拼接。
2、使用字符数组,或者每次只处理一个字符,而不是将他们组合起来。

第 52 条:通过接口引用对象

第 53 条:接口优先于反射机制

1、反射机制,通过一个 Class 实例,你可以获得 Constructor (构造器)、Method (方法)、Field (域)。
反射代价
1、丧失编译时类型检查的好处。
2、执行反射需要的代码笨拙和冗长。
3、性能损失。

第 54 条:谨慎地使用本地方法

1、本地语言是不安全的。
2、本地方法不易编写和阅读。

第 55 条:谨慎地进行优化

第 56 条:遵守普遍接受的命名惯例

猜你喜欢

转载自blog.csdn.net/BlueSky003/article/details/80990240