Skip to content

《Java核心编程》2020年6月第1版第1次印刷勘误、改进项 #4

@waylau

Description

@waylau

2.1.2(p19)

“l和1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”

改进为

“字母l和数字1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”

2.1.2(p20)

最后一段代码:

float f1 =10;  
f1 = 10.0;  // 为double类型

改进为:

float f1 =10;  
f1 = 10.0;  // 编译失败,因为10.0为double类型,不能将double转为float

2.1.4(p22)

“加上4为十六进制的数表示”应为“加上4位十六进制的数表示”

8.5.1(p199)

该页第二段代码开头多了“```java”字样。应为;

SynchronizedRGB color = new SynchronizedRGB(0, 0, 0, “Pitch Black”); 
… 
int myColorInt = color.getRGB(); // 语句1 
String myColorName = color.getName(); // 语句2

9.4.4(p218)

该页第二段代码,变量命名有误:

// 重复0次返回空字符串
var string = "foo";
var result2 = string.repeat(0);

assertEquals("", result2);

应为:

// 重复0次返回空字符串
var string = "foo";
var result1 = string.repeat(0);

assertEquals("", result1);

13.11.2(p308)

该页第二段排版有问题。应为:

可以看到,

  • supplier方法的实现为“ArrayList::new”,创建一个ArrayList对象并返回;
  • accumulator方法的实现为“List::add”,将流中的元素添加进上面创建的ArrayList对象;
  • combiner方法的实现为“(left, right) -> { left.addAll(right); return left;}”,对于两个中间结果容器ArrayList,将其中一个的所有元素添加进另外一个,并返回另外一个ArrayList;
  • characteristics方法的实现是返回静态常量CH_ID(它是一个包含了IDENTITY_FINISH的集合,标示中间结果是可以直接向最终结果进行强制类型转换的)。

14.5(p319)

第一段排版有问题。应为:

Java 8在List和Set接口中引入了几种方法:

  • removeIf删除与谓词匹配的元素。它可用于实现List或Set的所有类(并且从Collection接口继承)。
  • replaceAll在List上可用,并使用(UnaryOperator)函数替换元素。
  • sort也可在List界面上使用,并对列表本身进行排序。
    所有这些方法都会改变调用它们的集合。换句话说,它们改变了集合本身,而不像流操作那样产生新的(复制的)结果。

14.16.2(p330)

最后一段排版有问题。应为:

在上述代码中,

  • table代表整个HashMap。装载Node的数组,作为ConcurrentHashMap的数据容器,采用懒加载的方式,直到第一次插入数据的时候才会进行初始化操作,数组的大小总是2的幂次方。采用table数组元素作为锁,从而实现对每一行数据进行加锁,进一步减少并发冲突的概率。
  • nextTable是在扩容时使用的,平时为null,只有在扩容的时候才为非null。扩容完成后会被重置为null。
  • baseCount保存着整个哈希表中存储的所有节点的个数总和,有点类似于HashMap的size属性。
  • 无论是初始化还是扩容哈希表,都需要依赖这个sizeCtl。sizeCtl有以下几种取值:
    • 0,默认值;
    • -1,代表哈希表正在进行初始化;
    • 大于0,相当于HashMap中的threshold,表示阈值;
    • 小于-1,代表有多个线程正在进行扩容。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions