您的位置:首页 > Web前端

【重拾Effective Java】二

2016-01-18 18:38 204 查看
将局部变量的作用域最小化

要使得局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明,这样可以避免代码混乱。

过早的声明局部变量不仅使得它的作用域过早的扩展,而且也造成结束过于晚了。局部变量的作用域从它被声明的点开始扩展,一直到外围块(block)的结束处。

几乎每个局部变量的声明都应该包含一个初始化表达式。

for-each循环优先于传统的for循环

for-each循环通过完全隐藏迭代器或者索引变量,避免了混乱,而且这样的做法也更加高效。for-each循环在简洁性和预防bug方面有着传统for循环无法比拟的优势,并且性能更好,应尽可能少使用传统的for循环。

不过也有几种情况下无法使用for-each,如下三种:

过滤,如果需要遍历集合,并删除选定的元素,就需要显示的迭代器了,以便做删除操作。

转换,如果需要遍历列表或者数组,并取代它部分或者全部元素值,就需要迭代器或者数组索引,以便设定元素的值。

平行迭代,如果需要并行的遍历多个集合,就需要显式的控制迭代器或者索引变量。

如果需要精确的答案,少使用float和double

这两种类型数据主要用于科学计算,它们执行的是二进制浮点运算。

如下:

1.03-0.42=0.6100000000000001

基本类型优于装箱基本类型

基本类型只有值,而装箱基本类型则具有与它们的值不同的同一性。也就是说,两个装箱基本类型可以具有相同的值和不同的同一性。

基本类型只有功能完备的值,而每个装箱基本类型除了它对基本类型的所有功能之外,还有个非功能值:null.

基本类型通常比装箱基本类型更节省时间和空间。

尽可能少使用字符串

字符串不适合代替枚举类型

字符串不适合代替聚集类型

字符串不适合代替能力表

在字符串连接方面,常用“+”,但在数据过大时,尽量避免使用,应当推荐使用:

StringBuilder b;

b.append(所连接的内容);

在接口能代替类的时候,尽量选择使用接口

如果有合适的接口存在,那么对于参数,返回值,常量和域来说,就都应该使用接口类型进行声明。创建一个对象往往是极其消耗内存和时间的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java