Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
waylau opened this issue Jun 6, 2020 · 0 comments
Open

Comments

@waylau
Copy link
Owner

waylau commented Jun 6, 2020

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,代表有多个线程正在进行扩容。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant