57. 最小化局部变量的作用域

在首次使用局部变量的地方进行声明,通过最小化局部变量的作用域,可以提高代码的可读性和可维护性,并降低出错的可能性。
最小化局部变量的最终目的是保持方法小而集中,如果在同一方法总组合两个行为,则与一个行为相关的局部变量可能会位于执行另一个行为的代码规范内。为了防止这种情况发生,只需要将方法分为两个:每个行为对应一个方法

58. for-each循环优于传统的for循环

传统for循环会引入额外的索引变量,并可能会引发角标越界

59. 了解并使用库

  • LocalDateTime替代Date
  • ThreadLocalRandom替代Random
  • Collections
  • j.u.c
  • Guava

    60. 若需要精确值就避免使用float和double

    当需要精确计算时使用BigDecimal、int、long进行计算;
    当进行货币计算时可以使用int放大100倍,用分代替元进行计算;

    61. 基本数据类型优于包装类

    混合使用基本类型和包装类型是,包装类型会进行自动拆箱,这会带来额外的性能消耗;
    控制包装类型的自动拆箱会引发NullPointerException;
    需要注意基本类型默认值引发的问题;

    62. 当使用其他类型更适合时,应避免使用字符串

  • 字符串是其他值类型的糟糕替代品

  • 字符串是枚举类型的糟糕替代品
  • 字符串是聚合类型的糟糕替代品
    当存在或可以编写更好的数据类型时,应避免将字符串用来表示对象,如果使用不当,字符串比其他类型更麻烦,灵活性更差,速度更慢,更容易出错。字符串经常被误用的类型包括基本类型、枚举和聚合类型;

    63. 当心字符串连接引发的性能问题

    如果连接的字符串数量很大,使用StringBuilder替代字符串连接操作符(+);

    64. 通过接口引用对象

    接口能够使得程序更加灵活

    65. 接口优于反射

  • 失去了编译时类型检查的所有好处

  • 执行反射访问所需的代码即笨拙又冗长
  • 性能降低

    66. 谨慎本地方法

    67. 谨慎进行优化