《编写高质量代码之JAVA》阅读摘要-基础篇

前言: 温故而知新。
之前阅读过Python版本的《编写高质量代码》,收获颇丰。在此,我分享下我的部分阅读笔记,供大家参考。

通用方法与准则

1.自增陷阱

count = count++;
  • i++:先赋值后加1
  • ++i:先加1后赋值

c++里面,如上写法是ok的,但是java里面这是一个表达式,返回值是count 自加前的值,所以上述写法有误。

2.静态导入问题

3.break

switch case用法里一定要加break

4.异变业务逻辑部分使用脚本语言

如Groovy

5.动态编译

慎用,损失性能

6.instanceof

判断一个对象是否是某个类的实例

boolean b = new String() instanceof String

7.断言(Assertion)

  • 防御式编程写法,默认不启用
  • 可以避免不恰当的输入,或者错误环境而产生的逻辑异常。
assert str !=null;

基本类型

8.用偶判断

i%2==0?"偶数":"奇数"

9.包装类型

需要谨慎:

  • null值处理
  • 比大小

包装类型本质是类

10.随机数

  • Math.random 方法
  • Random类

注意不要暴露随机种子

11.静态变量

类加载时分配到数据区,内存中只有一个拷贝

12.gc

不确定的情况下,避免主动gc

字符串

13.字符串池(String Pool)

创建字符串时,检查池中是否有字面相等的值。

String a = "中国";  # 使用字符串池,减少内存占用
new String("中国"); # 不检查,不放入 字符串 池

14.String是线程安全的

15. StringUtils

xxx.replaceAll(sub,”“); 等

16.String 与 StringBuffer 、 StringBuilder

  • String:性能最高,适合长度不变场景
  • StringBuffer:可变字符序列,使用多线程场景,线程安全
  • StringBuilder:线程不安全,性能高,适合SQL拼装、JSON拼装场景

17.字符串拼接

  • +号: 最符合思维习惯,性能低
  • concat
  • StringBuilder和StringBuffer的append方法,性能极高

数组与集合

18.数组与集合的性能

  • 基础类型: 在栈内存中操作,速度快,容量小
  • 对象:堆内存中操作,速度慢,容量大

19.ArrayList

  • 大小可变的数组(底层仍然是数组)
  • 初始化容量,显著提升性能
 new ArrayList<String>(75);  # 1.5倍问题
  • Vector是ArrayList的多线程版本

20.Array

  • Arrays.sort(data.clone()); 给int[] 的data排序
  • Arrays.asList();返回的是一个长度不可变的list

21.foreach写法

java中foreach是iterator迭代器。

引申: 遍历方法的选择

22.LinkedList

是一个双向列表,与ArrayList相比:

  • 删除动作,比ArrayList快20倍
  • 插入动作,LinkedList占优
  • 修改动作,LinkedList比ArrayList慢几个数量级
  • add操作,五五开

23.List相等问题

满足两个条件:

  • 元素相等
  • 长度相等

24.List检索问题

  • {List}.indexOf(“值”); —本质是遍历
  • Collections.binarySearch({List},”值”);

binarySearch的前提:数据集已经实现升序排序

25.HashMap

  • 键值对存储结构
  • 元素不宜过多(存储放大)
  • 底层也是数组,查询时比ArrayList快40+倍
  • 增加元素前会计算hash值
  • HashMap与HashTable,HashTable是线程安全的,其他几乎一样。

26.Set与List

最大区别:Set中元素不可重复
TreeSet: 默认排序的Set集合

枚举与注解

27.枚举

  • 数量限制在64个以内
  • 注解+枚举,实现强大的功能

28.override注解

注意不同jdk版本的区别

反射与泛型

29. 泛型

编译时擦除类型

30.反射

待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写高质量代码:改善java程序的151个建议》内容简介:在通往“java技术殿堂”的路上,本书将为你指点迷津!内容全部由java编码的最佳实践组成,从语法、程序设计和架构、工具和框架、编码风格和编程思想等五大方面,对java程序员遇到的各种棘手的疑难问题给出了经验性的解决方案,为java程序员如何编写高质量java代码提出了151条极为宝贵的建议。对于每一个问题,不仅以建议的方式从正反两面给出了被实践证明为十分优秀的解决方案和非常糟糕的解决方案,而且还分析了问题产生的根源,犹如醍醐灌顶,让人豁然开朗。 《编写高质量代码:改善java程序的151个建议》一共12章,第1~3章针对java语法本身提出了51条建议,例如覆写变长方法时应该注意哪些事项、final修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么地方等;第4~9章重点针对jdk api的使用提出了80条建议,例如字符串的拼接方法该如何选择、枚举使用时有哪些注意事项、出现nullpointerexception该如何处理、泛型的多重界限该如何使用、多线程编程如何预防死锁,等等;第10~12章针对程序性能、开源的工具和框架、编码风格和编程思想等方面提出了20条建议。 《编写高质量代码:改善java程序的151个建议》针对每个问题所设计的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中崭露头角,建议你将此书搁置在手边,随时查阅,一定能使你的学习和开发工作事半功倍。 《编写高质量代码:改善javascript程序的188个建议》内容简介:本书是web前端工程师进阶修炼的必读之作,将为你通往“javascript技术殿堂”指点迷津!内容全部由编写高质量javascript代码的最佳实践组成,从基本语法、应用架构、工具框架、编码风格、编程思想等5大方面对web前端工程师遇到的疑难问题给出了经验性的解决方案,为web前端工程师如何编写高质量javascript代码提供了188条极为宝贵的建议。对于每一个问题,不仅以建议的方式给出了被实践证明为十分优秀的解决方案,而且还给出了经常被误用或被错误理解的不好的解决方案,从正反两个方面进行了分析和对比,犹如醍醐灌顶,让人豁然开朗。 《编写高质量代码:改善javascript程序的188个建议》针对每个问题所设计的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中被用到,建议你将此书放置在手边,随时查阅,一定能使你的学习和开发工作事半功倍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值