Effective Java学习笔记---------通用编程

将局部变量的作用域最小化

  1. Java允许你在任何可以出现语句的地方
  2. 要使局部变量的作用域最小化,最有力的方法就是在第一次要使用它的地方进行声明
  3. 如果你还没有足够的信息来对一个变量进行有意义的初始化,就应该延迟这个声明
  4. 如果在循环终止之后不再需要循环变量的内容,for循环就优先于while循环

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

相比于传统的for循环,for-each循环在简洁性、灵活性和出错预防性方面都有绝对的优势,并且没有性能惩罚的问题

了解和实用类库

  1. 现在不再使用Random,而是选择ThreadLocalRandom
  2. 每个java的发行版本中都会添加新的特性,了解这个新特性是值得的
  3. 必须熟悉java.lang,java.util,java.io以及子包中的内容
  4. Collections Framework 和Stream 和java.util.concurrent
  5. 不要重复造轮子

如果需要精确的答案,请避免使用float和double,应该使用BigDecimal\int,或者long

如果数值范围没有操作9位十进制数字,可以使用int,如果不超过18位数字,就可以使用long,如果超过18位数字,就必须使用BigDecimal

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

  1. 对装箱基本类型使用==操作符几乎总是错误
  2. 基本类型和装箱基本类型混合使用,装箱基本类型会自动拆箱
  3. 集合中的元素、键、值、不能使用基本类型,只能使用基本装箱类型
  4. 在参数化类型和方法中,必须使用装箱基本类型作为类型参数

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

连接字符串连接的性能

  1. 为连接n个字符串而使用字符串连接操作符(+),需要n的平方级的时间
  2. 为了获得可以接受的性能,使用StringBuilder代替String
  3. 不要用+,连接多个字符串

通过接口引用对象

  1. 如果和合适的接口类型存在,那么对于参数、返回值、变量和域,都应该使用接口来进行声明

            Map map = new HashMap<>();
  2. 使用接口作为类型会更加灵活

  3. 如果没有合适的接口,就用类层次结构中提供了必要功能的最小的具体类来引用对象

接口优先于反射机制

  1. 若编译期存在适当的接口或者超类,通过它们可以引用这个类,那么可以用反射创建实例,然后通过它们的接口或者超类,以正常的方式访问这些实例

谨慎地使用本地方法

  1. 使用本地方法来提高性能的做法是不值得提倡的

谨慎地进行优化

  1. 不要费力去编写快速的程序,应该努力编写好的程序

遵守普遍接受的命名惯例

  1. 包和模块的名称应该是层次状的,用句号分割每个部分,每个部分都包括小写字母

  2. 包名通常不超过8个字母,可以使用有意义的缩写

  3. 类、接口命名大驼峰写法

  4. 方法、域命名小驼峰写法

  5. 常量域是唯一推荐使用下划线的情形

  6. 可被实例化的类包括枚举类,通常用一个名词或者名词短语命名

  7. 不可实例化的工具类经常用复数名词命名

你可能感兴趣的:(Effective,Java学习笔记,java)