Effective Java(十)并发

如果你想获得更高的性能,使用并发是不可避免的。但是并发编程要比单线程编程难得多,一方面它很容易出错,另一方面错误很难复现。这一篇主要介绍如何写出正确、简洁、可靠的并发程序。

阅读更多

Effective Java(九)异常

Item 69 异常只用于异常

异常只用于异常的情况,不要用 try-catch 捕获 ArrayIndexOutOfBoundsException 并且不做任何处理这种方式来跳出数组遍历。为什么不用 for-each 循环呢?

设计良好的 API 不应该强迫它的客户端为了正常的控制流程而使用异常。

阅读更多

Effective Java(八)General Programming

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

好的编程习惯:在首次使用的地方声明它。

  1. 如果循环终止后不需要循环变量的内容,那么优先选择 for 循环而不是 while 循环。
  2. 如果变量需要在 try-catch 之外使用,那就必须在外面提前声明,这是一个例外。其他情况都应该遵循在首次使用的地方声明。
  3. 每个行为对应一个方法。保持方法小而集中。
阅读更多

Effective Java(六)Lambdas and Streams

Item 42 lambda 表达式优于匿名类

Java 的 Lambda 表达式本质上就是一个匿名类。而什么是匿名类?就是在使用的时候现场 new 并实现的类。

只有一个方法的接口称为 函数式接口(functioning interface),Lambda 表达式本质上就是对这样子的接口做现场实现。

阅读更多

Effective Java(四)泛型

Java 5 加入了泛型。在有泛型之前,你必须转换从集合中读取的每个对象。如果有人不小心插入了错误类型的对象,则在运行时可能会失败。使用泛型,你告诉编译器在集合中允许存放哪些类型的对象。编译器会自动插入强制转换,并在编译时告诉你是否尝试插入错误类型的对象。

阅读更多

Effective Java(一)创建和销毁对象

《Effective Java》这本书算得上有口皆碑了,去年发现出了第三版,趁某东活动入手了一本英文版,粗略了过了一下,这本书给我最大的体会就是它教你如何成为一个真正的 Java 程序员,而不是 CRUD 程序员或 Spring 程序员,读这本书,能让你站在更高的角度和更深层次的视角去剖析 Java 的细节,让人豁然开朗。然而,上半年因为各种原因,瞎忙活了大半年,这本书一直没机会捡起来仔细看。好在最近工作不忙,想起来有这本书,决定一天看两个 Item 。

系列目录:

阅读更多